home *** CD-ROM | disk | FTP | other *** search
/ PC World 2007 January / PCWorld_2007-01_cd.bin / v cisle / autoit / autoit-v3.2.0.1-setup.exe / Include / IE.au3 < prev    next >
Text File  |  2006-07-14  |  164KB  |  3,899 lines

  1. ; Include Version:1.65 (6 July 2006)
  2. #include-once
  3. #region Header
  4. #cs
  5.     Title:   Internet Explorer Automation UDF Library for AutoIt3
  6.     Filename:  IE.au3
  7.     Description: A collection of functions for creating, attaching to, reading from and manipulating Internet Explorer
  8.     Author:   DaleHohm
  9.     Version:  T2.0-5
  10.     Last Update: 7/3/06
  11.     Requirements: AutoIt3 Beta with COM support (3.1.1.63 or higher), Developed/Tested on WindowsXP Pro with Internet Explorer
  12.     Notes: Errors associated with incorrect objects will be common user errors.  AutoIt beta 3.1.1.63 has added an ObjName()
  13.     function that will be used to trap and report most of these errors.
  14.     
  15.     Note: Special thanks to big_daddy for working on documentation and creating helpfile for T2.0!
  16.     
  17.     Update History:
  18.     ===================================================
  19.     T2.0-5 7/3/06
  20.     
  21.     Fixes
  22.     _IETagNameGetCollection() and _IETagNameAllGetCollection() unnecessarily converted the object passed into a document object.
  23.     
  24.     Enhancements
  25.     Function headers in code updated and much more accurate
  26.     
  27.     New Features
  28.     None
  29.     
  30.     Changes
  31.     None
  32.     
  33.     ---------------------------------------------------
  34.     T2.0-4 6/26/06
  35.     
  36.     Fixes
  37.     _IEFrameGetObjByName() now returns NoMatch when name does not match an existing Frame or iFrame
  38.     _IECreate() with takeFocus set to False returned an erroneous warning
  39.     _IEImgGetCollection() fixed major problems (used link collection instead of img collection)
  40.     _IEFormElementOptionSelect() fixed fireEvent processing and index value datatype handling
  41.     _IEFormElementCheckboxSelect() fixed errors with fireEvent
  42.     _IEFormElementRadioSelect() fixed errors with fireEvent
  43.     _IEFormSubmit() fixed opportunity for object error
  44.     replaced two internal references to _IEGetProperty with _IEPropertyGet
  45.     
  46.     Enhancements
  47.     _IELoadWait() further enhanced to trap more "Access is denied" errors - these are not transient
  48.     _IEPropertyGet($o_object, "locationurl") now works with any DOM object
  49.     _IEFormElementOptionSelect() returns InvalidValue error when $f_select=0 unless type=select multiple
  50.     _IEAction() added "printdefault" to print directly to default printer (no dialog) - takes browser object only
  51.     Internal global variable $__IEAU3Debug added.  If True, additional debug information (from _IELoadWait) written to the console
  52.     
  53.     Changes
  54.     _IEFrameGetObjByName() no longer accepts a $i_index parameter.  Two frames with the same name is invalid in the DOM
  55.     Deprecated functions from T1.0 moved out of this file and into new file IE_V1Compatibility.au3
  56.     
  57.     ---------------------------------------------------
  58.     T2.0-3 6/1/06
  59.     
  60.     Fixes
  61.     fixed bug in _IELinkClickByIndex() - Invalid characters behind Object assignment ! (thanks 3telnick)
  62.     fixed bug in _IEFrameGetObjByName()
  63.     fixed bug in _IEFormElementGetObjByName()
  64.     fixed index bug in _IEFormElementOptionSelect()
  65.     
  66.     Enhanced Functions
  67.     added bounds checking for index value used with _IEFormElementOptionSelect()
  68.     added a sixth element to the array returned by _IE_VersionInfo() with a display value of the version (e.g. T2.0-3)
  69.     
  70.     Changes
  71.     None
  72.     
  73.     New Functions
  74.     None
  75.     
  76.     ---------------------------------------------------
  77.     T2.0-2 5/30/06
  78.     
  79.     Fixes
  80.     all *GetObjByName functions return correct collection count in @EXTENDED
  81.     _IEErrorNotify(True) now works (previously 1 worked, True did not)
  82.     
  83.     Enhanced Functions
  84.     _IELoadWait() now traps COM errors that used to abort script.  Assumes these errors are transient and continues until timeout
  85.     _IELoadWait() now traps Frame cross-site scripting security errors and returns with $_IEStatus_AccessDenied warning
  86.     Note: for _IELoadWait() to trap COM errors, it is critical that you use _IEErrorHandlerRegister() if using your own COM error handler
  87.     when @ERROR is set, @EXTENDED contains invalid parameter number for most functions
  88.     _IE_Introduction() enhanced with more information
  89.     _IEExample() new modules: table, frameset, iframe
  90.     _IEExample() enhanced modules: basic, form
  91.     
  92.     Changes
  93.     _IEQuit() returns $_IEStatus_InvalidObjectType error for anything other than a browser object (including embedded controls)
  94.     
  95.     New Functions
  96.     NONE
  97.     
  98.     ---------------------------------------------------
  99.     T2.0-1 5/13/06
  100.     
  101.     Fixes
  102.     fixed Timeout for _IELoadWait
  103.     fixed _IEErrorHandler routines (were a no op)
  104.     fixed *GetObjByName functions to return 0 and set @error to $_IEStatus_NoMatch when no match was found
  105.     
  106.     Enhanced Functions
  107.     added symboloic error status codes to all functions
  108.     added Object type checks to all functions - return errors if wrong object type passed
  109.     added bounds checking for Index values in *Collection routines
  110.     all functions now write colsole messages when errors or warnings are encountered - can be turned on or off with _IEErrorNotify()
  111.     
  112.     Changes
  113.     reversed order of $s_string and $s_name parameters in _IEFormElementRadioSelect() function
  114.     added optional $s_name parameter to _IEFormElementCheckboxSelect() function
  115.     
  116.     New Functions
  117.     _IE_Introduction() added - Currently pretty basic.  Intended to supplement the helpfile with overview information
  118.     _IE_Example() added - currently allow "basic" and "form" to create windows with stock elements to be used in other examples
  119.     _IE_VersionInfo() added - returns a 5-element array with version inforamtion for IE.au3
  120.     _IEErrorNotify() added - turn orr or on console messages alerting IE.au3 warnings and errors.  On by default.  With null parameter it returns current status
  121.     ---------------------------------------------------
  122.     T2.0-0 5/4/06
  123.     
  124.     Enhanced Functions
  125.     _IECreate() greatly enhanced to take new parameters
  126.     _IEAttach() enhanced with "embedded" for embedded browser controls
  127.     _IEAttach() enhanced with "dialogbox" for HTML modal and modeless dialogboxes (actually identical handling to "embedded")
  128.     _IELoadWait() enhanced/rewritten to fix timing issues and work on arbitrary object types
  129.     _IELoadWait() enhanced with timeout parameter (also honors global setting controlled by _IELoadWaitTimeout() - default 5 minutes)
  130.     _IEFormSubmit() enhanced to optionally perform an _IELoadWait
  131.     _IEFormElementSetValue() enhanced by optionally firing OnChange event
  132.     _IETableWriteToArray enhanced to negotiate spanned columns (when there is a colSpan, leftmost array alement will contain data, others will be null
  133.     _IETagNameGetCollection() enhanced to work with InternetExplorer.Application, Window, Frame, iFrame or any object in the DOM
  134.     _IETagNameAllGetCollection() enhanced to work with InternetExplorer.Application, Window, Frame, iFrame or any object in the DOM
  135.     _IEAction() enhanced with cut, paste, delete, saveas, click, disable, enable
  136.     _IEPropertyGet() enhanced - "HWND" now returns a valid window handle (instead of string representation of HWND)
  137.     _IEPropertyGet() enhanced with fullscreen, isDisabled and silent
  138.     _IEPropertyGet() enhanced with a series of properties avaiable from the browser "navigator" (aka clientInfo) property
  139.     All *GetCollection and *GetObjByName functions enhanced so that @EXTENDED returns collection length
  140.     All *GetCollection and *GetObjByName functions enhanced to take a $i_index parameter - if -1, returns a collection,
  141.     .....else returns a specific instance by 0-based index.  This allows deprecation of *GetCount and *GetObjbyIndex functions
  142.     
  143.     New Functions
  144.     _IELoadWaitTimeout() added
  145.     _IEGetObjByName() added
  146.     _IECreateEmbedded() added
  147.     _IEBodyReadText() added
  148.     _IEDocReadHTML() added
  149.     _IEDocWriteHTML() added
  150.     _IEHeadInsertEventScript() added
  151.     _IEImgGetCollection() added
  152.     _IELinkGetCollection() added
  153.     _IEFormElementOptionSelect() added
  154.     _IEFormElementCheckBoxSelect() added
  155.     _IEFormElementRadioSelect() added
  156.     _IEFormElementImageClick() added
  157.     _IEPropertySet() added
  158.     _IEErrorHandlerRegister() added
  159.     _IEErrorHandlerDeRegister() added
  160.     
  161.     
  162.     Deprecated Functions (these are not documented and will be removed from the next release)
  163.     _IEFrameGetObjByIndex() deprecated, use: $oFrame = _IEFrameGetCollection($oIE, your-index)
  164.     _IEFrameGetCount() deprecated, use: $oFrames = _IEFrameGetCollection($oIE), $iCount = @EXTENDED
  165.     _IEFrameGetNameByIndex() deprecated, use: $oFrame = _IEFrameGetCollection($oIE, your-index), $sName = $oFrame.name
  166.     _IEFrameGetSrcByIndex deprecated, use: $oFrame = _IEFrameGetCollection($oIE, your-index), $src = $oFrame.src
  167.     _IEFrameGetSrcByName deprecated, use: $oFrame = _IEFrameGetObjByName($oIE, "framename"), $src = $oFrame.src
  168.     
  169.     _IEFormGetObjByIndex() deprecated, use: $oForm = _IEFormGetCollection($oIE, your-index)
  170.     _IEFormGetCount() deprecated, use: $oForms = _IEFormGetCollection($oIE), $iCount = @EXTENDED
  171.     _IEFormGetNameByIndex deprecated, use: $oForm = _IEFormGetCollection($oIE, your-index)
  172.     
  173.     _IEFormElementGetObjByIndex() deprecated, use: $oElement = _IEFormElementGetCollection($oForm, your-index)
  174.     _IEFormElementGetCount() deprecated, use: $oElements = _IEFormElementGetCollection($oForm), $iCount = @EXTENDED
  175.     _IEFormElementGetTypeByIndex deprecated, use: $oElement = _IEFormElementGetCollection($oForm, your-index), $sType = $oElement.type
  176.     _IEFormElementOptionGetCount() deprecated, use: $oElement = _IEFormElementGetObjByName($oForm, your-name), $oElement.options.length
  177.     
  178.     _IETableGetObjByIndex() deprecated, use: $oTable = _IETableGetCollection($oIE, your-index)
  179.     _IETableGetCount() deprecated, use: $oTables = _IETableGetCollection($oIE), $iCount = @EXTENDED
  180.     
  181.     
  182.     Renamed Functions (deprecated and replaced with new functions)
  183.     _IEClickLinkByText() renamed to _IELinkClickByText()
  184.     _IEClickLinkByIndex() renamed to _IELinkClickByIndex()
  185.     _IEDocumentGetObj() renamed to _IEDocGetObj()
  186.     _IEClickImg() renamed to _IEImgClick()
  187.     _IEGetProperty() renamed to _IEPropertyGet()
  188.     
  189.     
  190.     New Internal Functions (Not to be documented so that they can change more readily)
  191.     __IELockSetForegroundWindow() internal function added (thanks Valik)
  192.     __IEControlGetObjFromHWND() internal function added (thanks Larry)
  193.     __IEIsObjType() internal function added
  194.     __IEInternalErrorHandlerRegister() internal function added
  195.     __IEInternalErrorHandlerDeRegister() internal function added
  196.     
  197.     ---------------------------------------------------
  198.     T1.4 7/24/05
  199.     Fixed bug in _IEClickImg() that only allowed exact matches instead of sub-string matches
  200.     Enhanced _IELoadWait() to work with Frame and Window objects (by drilling document readyState)
  201.     Enhanced _IELoadWait() to add a configurable delay before checking status (to allow previous actions to start execution) - default = 0 milliseconds
  202.     Added _IEBodyReadHTML() and _IEBodyWriteHTML() functions (read the page HTML, modify it and put it back!)
  203.     Fixed _IEAttach() so that certain shell variants did not cause failures (using new ObjName() function in beta 3.1.1.63 -- thanks Sven!)
  204.     ---------------------------------------------------
  205.     T1.3 7/14/05
  206.     Change _IEPropertyGet() to _IEGetProperty() (sorry, should have been that way from the beginning)
  207.     Added _IEClickImg() that allows finding and clicking on an image by alt text, name or src
  208.     Added _IETagNameAllGetCollection() to get a collection of all elements in the document
  209.     Added _IETagNameGetCollection() to get a collection of all elements in a document with a specified tagname
  210.     ---------------------------------------------------
  211.     T1.2 7/11/05
  212.     Added description text to all functions (full parameter documentation still pending)
  213.     Removed 4 _IEAttachByXXXX functions and replaced with one _IEAttach function with a mode parameter
  214.     Removed _IEForward() and _IEBack() and put functionality into the _IEAction() function
  215.     Added _IEAction() that performs many simple browser functions
  216.     Added _IEPropertyGet() that retrieves many properties of the browser
  217.     ---------------------------------------------------
  218.     T1.1 7/9/05
  219.     Fixed errors with _IEQuit, _IETableGetCount and _IETableGetCollection
  220.     Added _IETableWriteToArray
  221.     ---------------------------------------------------
  222.     T1.0 7/9/05
  223.     Initial Release - error handling is pretty basic, documentation has just begun, only initial UDF standards met
  224.     ---------------------------------------------------
  225.     ===================================================
  226. #ce
  227. #endregion
  228. #region Global Variables and Constants
  229. Global Const $IEAU3VersionInfo[6] = ["T", 2, 0, 5, "20060703", "T2.0-5"]
  230. Global Const $LSFW_LOCK = 1, $LSFW_UNLOCK = 2
  231. Global $__IELoadWaitTimeout = 300000 ; 5 Minutes
  232. Global $__IEAU3Debug = False
  233. Global $__IEAU3V1Compatibility
  234. Global $_IEErrorNotify = True
  235. Global $oIEErrorHandler, $sIEUserErrorHandler
  236. Global _; Com Error Handler Status Strings
  237.         $IEComErrorNumber, _
  238.         $IEComErrorNumberHex, _
  239.         $IEComErrorDescription, _
  240.         $IEComErrorScriptline, _
  241.         $IEComErrorWinDescription, _
  242.         $IEComErrorSource, _
  243.         $IEComErrorHelpFile, _
  244.         $IEComErrorHelpContext, _
  245.         $IEComErrorLastDllError, _
  246.         $IEComErrorComObj, _
  247.         $IEComErrorOutput
  248. ;
  249. ; Enums
  250. ;
  251. Global Enum _; Error Status Types
  252.         $_IEStatus_Success = 0, _
  253.         $_IEStatus_GeneralError, _
  254.         $_IEStatus_ComError, _
  255.         $_IEStatus_InvalidDataType, _
  256.         $_IEStatus_InvalidObjectType, _
  257.         $_IEStatus_InvalidValue, _
  258.         $_IEStatus_LoadWaitTimeout, _
  259.         $_IEStatus_NoMatch, _
  260.         $_IEStatus_AccessIsDenied
  261. Global Enum Step * 2 _; NotificationLevel
  262.         $_IENotifyLevel_None = 0, _
  263.         $_IENotifyNotifyLevel_Warning = 1, _
  264.         $_IENotifyNotifyLevel_Error, _
  265.         $_IENotifyNotifyLevel_ComError
  266. Global Enum Step * 2 _; NotificationMethod
  267.         $_IENotifyMethod_Silent = 0, _
  268.         $_IENotifyMethod_Console = 1, _
  269.         $_IENotifyMethod_ToolTip, _
  270.         $_IENotifyMethod_MsgBox
  271. #endregion
  272. #region Core functions
  273. ;===============================================================================
  274. ;
  275. ; Function Name:    _IECreate()
  276. ; Description:      Create an Internet Explorer Browser Window
  277. ; Parameter(s):     $s_Url            - Optional: specifies the Url to navigate to upon creation
  278. ;                    $f_tryAttach    - Optional: specifies whether to try to attach to an existing window
  279. ;                                        0 = (Default) do not try to attach
  280. ;                                        1 = Try to attach to an existing window
  281. ;                    $f_visible         - Optional: specifies whether the browser window will be visible
  282. ;                                        0 = Browser Window is hidden
  283. ;                                        1 = (Default) Browser Window is visible
  284. ;                    $f_wait            - Optional: specifies whether to wait for page to load before returning
  285. ;                                        0 = Return immediately, not waiting for page to load
  286. ;                                        1 = (Default) Wait for page load to complete before returning
  287. ;                    $f_takeFocus    - Optional: specifies whether to bring the attached window to focus
  288. ;                                        0 =  Do Not Bring window into focus
  289. ;                                        1 = (Default) bring window into focus
  290. ; Requirement(s):   AutoIt3 Beta with COM support (post 3.1.1)
  291. ; Return Value(s):  On Success    - Returns an object variable pointing to an InternetExplorer.Application object
  292. ;                   On Failure    - Returns 0 and sets @ERROR
  293. ;                    @ERROR        - 0 ($_IEStatus_Success) = No Error
  294. ;                                - 1 ($_IEStatus_GeneralError) = General Error
  295. ;                                - 3 ($_IEStatus_InvalidDataType) = Invalid Data Type
  296. ;                                - 4 ($_IEStatus_InvalidObjectType) = Invalid Object Type
  297. ;                                - 6 ($_IEStatus_LoadWaitTimeout) = Load Wait Timeout
  298. ;                                - 8 ($_IEStatus_AccessIsDenied) = Access Is Denied
  299. ;                    @Extended    - Set to true (1) or false (0) depending on the success of $f_tryAttach
  300. ; Author(s):        Dale Hohm
  301. ;
  302. ;===============================================================================
  303. ;
  304. Func _IECreate($s_Url = "about:blank", $f_tryAttach = 0, $f_visible = 1, $f_wait = 1, $f_takeFocus = 1)
  305.     
  306.     Local $result, $f_mustUnlock = 0
  307.     
  308.     ; Temporary campatability mode for pre V2.0 code
  309.     If $__IEAU3V1Compatibility Then
  310.         Switch String($s_Url)
  311.             Case "0"
  312.                 $s_Url = "about:blank"
  313.                 $f_visible = 0
  314.                 __IEErrorNotify("Warning", "_IECreate", "", _
  315.                         "Using deprecated behavior - $f_visible is now parameter 3 instead of parameter 1")
  316.             Case "1"
  317.                 $s_Url = "about:blank"
  318.                 $f_visible = 1
  319.                 __IEErrorNotify("Warning", "_IECreate", "", _
  320.                         "Using deprecated behavior - $f_visible is now parameter 3 instead of parameter 1")
  321.         EndSwitch
  322.     EndIf
  323.     
  324.     If Not $f_visible Then $f_takeFocus = 0 ; Force takeFocus to 0 for hidden window
  325.     
  326.     If $f_tryAttach Then
  327.         Local $oResult = _IEAttach($s_Url, "url")
  328.         If IsObj($oResult) Then
  329.             If $f_takeFocus Then WinActivate(HWnd($oResult.HWND))
  330.             SetError($_IEStatus_Success)
  331.             SetExtended(1)
  332.             Return $oResult
  333.         EndIf
  334.     EndIf
  335.     
  336.     If Not $f_visible Then
  337.         $result = __IELockSetForegroundWindow($LSFW_LOCK)
  338.         If $result Then $f_mustUnlock = 1
  339.     EndIf
  340.     
  341.     Local $o_object = ObjCreate("InternetExplorer.Application")
  342.     If Not IsObj($o_object) Then
  343.         __IEErrorNotify("Error", "_IECreate", "", "Browser Object Creation Failed")
  344.         SetError($_IEStatus_GeneralError)
  345.         Return 0
  346.     EndIf
  347.     
  348.     $o_object.visible = $f_visible
  349.     
  350.     Do
  351.         Sleep(100)
  352.     Until ($o_object.readyState = "complete" Or $o_object.readyState = 4)
  353.     If $f_mustUnlock Then
  354.         $result = __IELockSetForegroundWindow($LSFW_UNLOCK)
  355.         If Not $result Then __IEErrorNotify("Warning", "_IECreate", "", "Foreground Window Unlock Failed!")
  356.         ; If the unlock doesn't work we will have created an unwanted modal window
  357.     EndIf
  358.     _IENavigate($o_object, $s_Url, $f_wait)
  359.     SetError(@error)
  360.     Return $o_object
  361. EndFunc   ;==>_IECreate
  362.  
  363. ;===============================================================================
  364. ;
  365. ; Function Name:    _IECreateEmbedded()
  366. ; Description:        Create a Webbrowser object suitable for embedding in an AutoIt GUI
  367. ;                    with GuiCtrlCreateObj().
  368. ; Parameter(s):        None
  369. ; Requirement(s):   AutoIt3 Beta with COM support (post 3.1.1)
  370. ; Return Value(s):  On Success    - Returns a Webbrowser object reference
  371. ;                   On Failure    - Returns 0 and sets @ERROR
  372. ;                    @ERROR        - 0 ($_IEStatus_Success) = No Error
  373. ;                                - 1 ($_IEStatus_GeneralError) = General Error
  374. ; Author(s):        Dale Hohm
  375. ;
  376. ;===============================================================================
  377. ;
  378. Func _IECreateEmbedded()
  379.     
  380.     Local $o_object = ObjCreate("Shell.Explorer.2")
  381.     
  382.     If Not IsObj($o_object) Then
  383.         __IEErrorNotify("Error", "_IECreateEmbedded", "", "WebBrowser Object Creation Failed")
  384.         SetError($_IEStatus_GeneralError)
  385.         Return 0
  386.     EndIf
  387.     ;
  388.     SetError($_IEStatus_Success)
  389.     Return $o_object
  390. EndFunc   ;==>_IECreateEmbedded
  391.  
  392. ;===============================================================================
  393. ;
  394. ; Function Name:    _IENavigate()
  395. ; Description:        Directs an existing browser window to navigate to the specified URL
  396. ; Parameter(s):        $o_object         - Object variable of an InternetExplorer.Application, Window or Frame object
  397. ;                    $s_Url             - URL to navigate to (e.g. "http://www.autoitscript.com")
  398. ;                    $f_wait         - Optional: specifies whether to wait for page to load before returning
  399. ;                                        0 = Return immediately, not waiting for page to load
  400. ;                                        1 = (Default) Wait for page load to complete before returning
  401. ; Requirement(s):   AutoIt3 Beta with COM support (post 3.1.1)
  402. ; Return Value(s):  On Success     - Returns -1
  403. ;                   On Failure    - Returns 0 and sets @ERROR
  404. ;                    @ERROR        - 0 ($_IEStatus_Success) = No Error
  405. ;                                - 1 ($_IEStatus_GeneralError) = General Error
  406. ;                                - 3 ($_IEStatus_InvalidDataType) = Invalid Data Type
  407. ;                                - 4 ($_IEStatus_InvalidObjectType) = Invalid Object Type
  408. ;                                - 6 ($_IEStatus_LoadWaitTimeout) = Load Wait Timeout
  409. ;                                - 8 ($_IEStatus_AccessIsDenied) = Access Is Denied
  410. ;                    @Extended    - Contains invalid parameter number
  411. ; Author(s):        Dale Hohm
  412. ;
  413. ;===============================================================================
  414. ;
  415. Func _IENavigate(ByRef $o_object, $s_Url, $f_wait = 1)
  416.     If Not IsObj($o_object) Then
  417.         __IEErrorNotify("Error", "_IENavigate", "$_IEStatus_InvalidDataType")
  418.         SetError($_IEStatus_InvalidDataType, 1)
  419.         Return 0
  420.     EndIf
  421.     ;
  422.     If Not __IEIsObjType($o_object, "documentContainer") Then
  423.         __IEErrorNotify("Error", "_IENavigate", "$_IEStatus_InvalidObjectType")
  424.         SetError($_IEStatus_InvalidObjectType, 1)
  425.         Return 0
  426.     EndIf
  427.     ;
  428.     If __IEIsObjType($o_object, "browser") Then
  429.         Do
  430.             Sleep(100)
  431.         Until ($o_object.readyState = "complete" Or $o_object.readyState = 4)
  432.     EndIf
  433.     ;
  434.     $o_object.navigate ($s_Url)
  435.     If $f_wait Then
  436.         _IELoadWait($o_object)
  437.         SetError(@error)
  438.         Return -1
  439.     EndIf
  440.     SetError($_IEStatus_Success)
  441.     Return -1
  442. EndFunc   ;==>_IENavigate
  443.  
  444. ;===============================================================================
  445. ;
  446. ; Function Name:    _IEAttach()
  447. ; Description:        Attach to the first existing instance of Internet Explorer where the
  448. ;                    search string sub-string matches based on the selected mode.
  449. ; Parameter(s):        $s_string    - String to search for (for "embedded" or "dialogbox", use Title sub-string or HWND of window)
  450. ;                    $s_mode        - Optional: specifies search mode
  451. ;                                    Title        = (Default) browser title
  452. ;                                    URL            = url of the current page
  453. ;                                    Text         = text from the body of the current page
  454. ;                                    HTML         = html from the body of the current page
  455. ;                                    HWND         = hwnd of the browser window
  456. ;                                    Embedded     = title sub-string or hwnd of the window embedding the control
  457. ;                                    DialogBox     = title sub-string or hwnd of modal/modeless dialogbox
  458. ; Requirement(s):   AutoIt3 Beta with COM support (post 3.1.1)
  459. ;                    On Success    - Returns an object variable pointing to the IE Window Object
  460. ;                   On Failure    - Returns 0 and sets @ERROR
  461. ;                    @ERROR        - 0 ($_IEStatus_Success) = No Error
  462. ;                                - 5 ($_IEStatus_InvalidValue) = Invalid Value
  463. ;                                - 7 ($_IEStatus_NoMatch) = No Match
  464. ;                    @Extended    - Contains invalid parameter number
  465. ; Author(s):        Dale Hohm
  466. ;
  467. ;===============================================================================
  468. ;
  469. Func _IEAttach($s_string, $s_mode = "Title")
  470.     $s_mode = StringLower($s_mode)
  471.     Local $o_Shell = ObjCreate("Shell.Application")
  472.     Local $o_ShellWindows = $o_Shell.Windows (); collection of all ShellWindows (IE and File Explorer)
  473.     Local $h_control, $oResult
  474.     
  475.     ; Embedded browser controls and modal/modeless dialogboxes are not
  476.     ; included in ShellWindow collection so handle them seperately
  477.     If $s_mode = "embedded" Or $s_mode = "dialogbox" Then
  478.         ; Example:
  479.         ;    Run example in helpfile for GuiControlCreateObj first then:
  480.         ;        $oIE = _IEAttach("Window Title", "embedded")
  481.         ;        _IEClickLinkByText($oIE, "AutoIt V3")
  482.         Local $iWinTitleMatchMode = Opt("WinTitleMatchMode")
  483.         Opt("WinTitleMatchMode", 2)
  484.         $h_control = ControlGetHandle($s_string, "", "Internet Explorer_Server1")
  485.         $oResult = __IEControlGetObjFromHWND($h_control)
  486.         Opt("WinTitleMatchMode", $iWinTitleMatchMode)
  487.         If IsObj($oResult) Then
  488.             SetError($_IEStatus_Success)
  489.             Return $oResult
  490.         Else
  491.             __IEErrorNotify("Warning", "_IEAttach", "$_IEStatus_NoMatch")
  492.             SetError($_IEStatus_NoMatch, 1)
  493.             Return 0
  494.         EndIf
  495.     EndIf
  496.     
  497.     For $o_window In $o_ShellWindows
  498.         
  499.         $h_control = ControlGetHandle(_IEPropertyGet($o_window, "hwnd"), "", "Internet Explorer_Server1")
  500.         If Not @error Then
  501.             Switch $s_mode
  502.                 Case "title"
  503.                     If StringInStr($o_window.document.title, $s_string) > 0 Then
  504.                         SetError($_IEStatus_Success)
  505.                         Return $o_window
  506.                     EndIf
  507.                 Case "url"
  508.                     If StringInStr($o_window.LocationURL, $s_string) > 0 Then
  509.                         SetError($_IEStatus_Success)
  510.                         Return $o_window
  511.                     EndIf
  512.                 Case "text"
  513.                     If StringInStr($o_window.document.body.innerText, $s_string) > 0 Then
  514.                         SetError($_IEStatus_Success)
  515.                         Return $o_window
  516.                     EndIf
  517.                 Case "html"
  518.                     If StringInStr($o_window.document.body.innerHTML, $s_string) > 0 Then
  519.                         SetError($_IEStatus_Success)
  520.                         Return $o_window
  521.                     EndIf
  522.                 Case "hwnd"
  523.                     If _IEPropertyGet($o_window, "hwnd") = $s_string Then
  524.                         SetError($_IEStatus_Success)
  525.                         Return $o_window
  526.                     EndIf
  527.                 Case Else
  528.                     ; Invalid Mode
  529.                     __IEErrorNotify("Error", "_IEAttach", "$_IEStatus_InvalidValue", "Invalid Mode Specified")
  530.                     SetError($_IEStatus_InvalidValue, 2)
  531.                     Return 0
  532.             EndSwitch
  533.         EndIf
  534.     Next
  535.     __IEErrorNotify("Warning", "_IEAttach", "$_IEStatus_NoMatch")
  536.     SetError($_IEStatus_NoMatch, 1)
  537.     Return 0
  538. EndFunc   ;==>_IEAttach
  539.  
  540. ;===============================================================================
  541. ;
  542. ; Function Name:    _IELoadWait()
  543. ; Description:        Wait for a browser page load to complete before returning
  544. ; Parameter(s):        $o_object     - Object variable of an InternetExplorer.Application
  545. ;                    $i_delay    - Optional: Milliseconds to wait before checking status
  546. ;                    $i_timeout    - Optional: Period of time to wait before exiting function
  547. ;                                    (default = 300000 ms aka 5 min)
  548. ; Requirement(s):   AutoIt3 Beta with COM support (post 3.1.1)
  549. ; Return Value(s):  On Success     - Returns 1
  550. ;                   On Failure    - Returns 0 and sets @ERROR
  551. ;                    @ERROR        - 0 ($_IEStatus_Success) = No Error
  552. ;                                - 1 ($_IEStatus_GeneralError) = General Error
  553. ;                                - 3 ($_IEStatus_InvalidDataType) = Invalid Data Type
  554. ;                                - 4 ($_IEStatus_InvalidObjectType) = Invalid Object Type
  555. ;                                - 6 ($_IEStatus_LoadWaitTimeout) = Load Wait Timeout
  556. ;                                - 8 ($_IEStatus_AccessIsDenied) = Access Is Denied
  557. ;                    @Extended    - Contains invalid parameter number
  558. ; Author(s):        Dale Hohm
  559. ;
  560. ;===============================================================================
  561. ;
  562. Func _IELoadWait(ByRef $o_object, $i_delay = 0, $i_timeout = -1)
  563.     If Not IsObj($o_object) Then
  564.         __IEErrorNotify("Error", "_IELoadWait", "$_IEStatus_InvalidDataType")
  565.         SetError($_IEStatus_InvalidDataType, 1)
  566.         Return 0
  567.     EndIf
  568.     
  569.     If Not __IEIsObjType($o_object, "browserdom") Then
  570.         __IEErrorNotify("Error", "_IELoadWait", "$_IEStatus_InvalidObjectType", ObjName($o_object))
  571.         SetError($_IEStatus_InvalidObjectType, 1)
  572.         Return 0
  573.     EndIf
  574.     
  575.     Local $oTemp, $f_Abort = False, $i_ErrorStatusCode = $_IEStatus_Success ;, $f_TimedOut = False
  576.     
  577.     ; Setup internal error handler to Trap COM errors, turn off error notification
  578.     Local $status = __IEInternalErrorHandlerRegister()
  579.     If Not $status Then __IEErrorNotify("Warning", "_IELoadWait", _
  580.             "Cannot register internal error handler, cannot trap COM errors", _
  581.             "Use _IEErrorHandlerRegister() to register a user error handler")
  582.     Local $f_NotifyStatus = _IEErrorNotify() ; save current error notify status
  583.     _IEErrorNotify(False)
  584.     
  585.     Sleep($i_delay)
  586.     ;
  587.     Local $IELoadWaitTimer = TimerInit()
  588.     If $i_timeout = -1 Then $i_timeout = $__IELoadWaitTimeout
  589.     
  590.     Switch ObjName($o_object)
  591.         Case "IWebBrowser2"; InternetExplorer
  592.             Do
  593.                 If (TimerDiff($IELoadWaitTimer) > $i_timeout) Then
  594.                     $i_ErrorStatusCode = $_IEStatus_LoadWaitTimeout
  595.                     $f_Abort = True
  596.                 EndIf
  597.                 Sleep(100)
  598.             Until ($o_object.readyState = "complete" Or $o_object.readyState = 4 Or $f_Abort)
  599.             Do
  600.                 If (TimerDiff($IELoadWaitTimer) > $i_timeout) Then
  601.                     $i_ErrorStatusCode = $_IEStatus_LoadWaitTimeout
  602.                     $f_Abort = True
  603.                 EndIf
  604.                 Sleep(100)
  605.             Until ($o_object.document.readyState = "complete" Or $o_object.document.readyState = 4 Or $f_Abort)
  606.         Case "DispHTMLWindow2" ; Window, Frame, iFrame
  607.             Do
  608.                 ; Trap "Access is Denied" error caused by cross-site scripting secuity restriction
  609.                 If @error = $_IEStatus_ComError And $IEComErrorNumber = 169 And $IEComErrorDescription = "Access is denied." Then
  610.                     $i_ErrorStatusCode = $_IEStatus_AccessIsDenied
  611.                     $f_Abort = True
  612.                 EndIf
  613.                 If (TimerDiff($IELoadWaitTimer) > $i_timeout) Then
  614.                     $i_ErrorStatusCode = $_IEStatus_LoadWaitTimeout
  615.                     $f_Abort = True
  616.                 EndIf
  617.                 Sleep(100)
  618.             Until ($o_object.document.readyState = "complete" Or $o_object.document.readyState = 4 Or $f_Abort)
  619.             Do
  620.                 ; Trap "Access is Denied" error caused by cross-site scripting secuity restriction
  621.                 If @error = $_IEStatus_ComError And $IEComErrorNumber = 169 And $IEComErrorDescription = "Access is denied." Then
  622.                     $i_ErrorStatusCode = $_IEStatus_AccessIsDenied
  623.                     $f_Abort = True
  624.                 EndIf
  625.                 If (TimerDiff($IELoadWaitTimer) > $i_timeout) Then
  626.                     $i_ErrorStatusCode = $_IEStatus_LoadWaitTimeout
  627.                     $f_Abort = True
  628.                 EndIf
  629.                 Sleep(100)
  630.             Until ($o_object.top.document.readyState = "complete" Or $o_object.top.document.readyState = 4 Or $f_Abort)
  631.         Case "DispHTMLDocument" ; Document
  632.             $oTemp = $o_object.parentWindow
  633.             Do
  634.                 ; Trap "Access is Denied" error caused by cross-site scripting secuity restriction
  635.                 If @error = $_IEStatus_ComError And $IEComErrorNumber = 169 And $IEComErrorDescription = "Access is denied." Then
  636.                     $i_ErrorStatusCode = $_IEStatus_AccessIsDenied
  637.                     $f_Abort = True
  638.                 EndIf
  639.                 If (TimerDiff($IELoadWaitTimer) > $i_timeout) Then
  640.                     $i_ErrorStatusCode = $_IEStatus_LoadWaitTimeout
  641.                     $f_Abort = True
  642.                 EndIf
  643.                 Sleep(100)
  644.             Until ($oTemp.document.readyState = "complete" Or $oTemp.document.readyState = 4 Or $f_Abort)
  645.             Do
  646.                 ; Trap "Access is Denied" error caused by cross-site scripting secuity restriction
  647.                 If @error = $_IEStatus_ComError And $IEComErrorNumber = 169 And $IEComErrorDescription = "Access is denied." Then
  648.                     $i_ErrorStatusCode = $_IEStatus_AccessIsDenied
  649.                     $f_Abort = True
  650.                 EndIf
  651.                 If (TimerDiff($IELoadWaitTimer) > $i_timeout) Then
  652.                     $i_ErrorStatusCode = $_IEStatus_LoadWaitTimeout
  653.                     $f_Abort = True
  654.                 EndIf
  655.                 Sleep(100)
  656.             Until ($oTemp.top.document.readyState = "complete" Or $oTemp.top.document.readyState = 4 Or $f_Abort)
  657.         Case Else ; this should work with any other DOM object
  658.             $oTemp = $o_object.document.parentWindow
  659.             Do
  660.                 ; Trap "Access is Denied" error caused by cross-site scripting secuity restriction
  661.                 If @error = $_IEStatus_ComError And $IEComErrorNumber = 169 And $IEComErrorDescription = "Access is denied." Then
  662.                     $i_ErrorStatusCode = $_IEStatus_AccessIsDenied
  663.                     $f_Abort = True
  664.                 EndIf
  665.                 If (TimerDiff($IELoadWaitTimer) > $i_timeout) Then
  666.                     $i_ErrorStatusCode = $_IEStatus_LoadWaitTimeout
  667.                     $f_Abort = True
  668.                 EndIf
  669.                 Sleep(100)
  670.             Until ($oTemp.document.readyState = "complete" Or $oTemp.document.readyState = 4 Or $f_Abort)
  671.             Do
  672.                 ; Trap "Access is Denied" error caused by cross-site scripting secuity restriction
  673.                 If @error = $_IEStatus_ComError And $IEComErrorNumber = 169 And $IEComErrorDescription = "Access is denied." Then
  674.                     $i_ErrorStatusCode = $_IEStatus_AccessIsDenied
  675.                     $f_Abort = True
  676.                 EndIf
  677.                 If (TimerDiff($IELoadWaitTimer) > $i_timeout) Then
  678.                     $i_ErrorStatusCode = $_IEStatus_LoadWaitTimeout
  679.                     $f_Abort = True
  680.                 EndIf
  681.                 Sleep(100)
  682.             Until ($oTemp.top.document.readyState = "complete" Or $o_object.top.document.readyState = 4 Or $f_Abort)
  683.     EndSwitch
  684.     
  685.     ; restore error notify and error handler status
  686.     _IEErrorNotify($f_NotifyStatus) ; restore notification status
  687.     __IEInternalErrorHandlerDeRegister()
  688.     
  689.     Switch $i_ErrorStatusCode
  690.         Case $_IEStatus_Success
  691.             SetError($_IEStatus_Success)
  692.             Return 1
  693.         Case $_IEStatus_LoadWaitTimeout
  694.             __IEErrorNotify("Warning", "_IELoadWait", "$_IEStatus_LoadWaitTimeout")
  695.             SetError($_IEStatus_LoadWaitTimeout, 3)
  696.             Return 0
  697.         Case $_IEStatus_AccessIsDenied
  698.             __IEErrorNotify("Warning", "_IELoadWait", "$_IEStatus_AccessIsDenied", _
  699.                     "Cannot verify readyState.  Likely casue: cross-site scripting security restriction.")
  700.             SetError($_IEStatus_AccessIsDenied)
  701.             Return 0
  702.         Case Else
  703.             __IEErrorNotify("Error", "_IELoadWait", "$_IEStatus_GeneralError", "Invalid Error Status - Notify IE.au3 developer")
  704.             SetError($_IEStatus_GeneralError)
  705.             Return 0
  706.     EndSwitch
  707. EndFunc   ;==>_IELoadWait
  708.  
  709. ;===============================================================================
  710. ;
  711. ; Function Name:    _IELoadWaitTimeout()
  712. ; Description:        Retrieve or set the current value in milliseconds _IELoadWait will try before timing out
  713. ; Parameter(s):        $i_timeout    - Optional: retrieve or specify the number of milliseconds
  714. ;                                - 0 or positive integer sets timeout to this value
  715. ;                                - -1 = (Default) returns the current timeout value
  716. ;                                    (stored in global variable $__IELoadWaitTimeout)
  717. ; Requirement(s):   None
  718. ; Return Value(s):  On Success     - If $i_timeout = -1, returns the current timeout value, else returns 1
  719. ;                   On Failure     - None
  720. ; Author(s):        Dale Hohm
  721. ;
  722. ;===============================================================================
  723. ;
  724. Func _IELoadWaitTimeout($i_timeout = -1)
  725.     If $i_timeout = -1 Then
  726.         SetError($_IEStatus_Success)
  727.         Return $__IELoadWaitTimeout
  728.     Else
  729.         $__IELoadWaitTimeout = $i_timeout
  730.         SetError($_IEStatus_Success)
  731.         Return 1
  732.     EndIf
  733. EndFunc   ;==>_IELoadWaitTimeout
  734.  
  735. #endregion
  736. #region Frame Functions
  737. ; Security Note on Frame functions:
  738. ; Note that security restriction in Internet Explorer related to cross-site scripting
  739. ; between frames can cause serious problems with the frame functions.  Functions that
  740. ; work connected to one site will fail when connected to another depending on the sites
  741. ; referenced in the frames.  In general, if all the referenced pages are on the same
  742. ; webserver these functions should work as described; if not, unexpected COM failures
  743. ; can occur.
  744. ;===============================================================================
  745. ;
  746. ; Function Name:    _IEIsFrameSet()
  747. ; Description:        Checks to see if the specified Window contains a FrameSet
  748. ; Parameter(s):     $o_object     - Object variable of an InternetExplorer.Application, Window or Frame object
  749. ; Requirement(s):   AutoIt3 Beta with COM support (post 3.1.1)
  750. ; Return Value(s):  On Success     - Returns 1 if the object references a FrameSet page
  751. ;                   On Failure    - Returns 0 and sets @ERROR
  752. ;                    @ERROR        - 0 ($_IEStatus_Success) = No Error
  753. ;                                - 3 ($_IEStatus_InvalidDataType) = Invalid Data Type
  754. ;                    @Extended    - Contains invalid parameter number
  755. ; Author(s):        Dale Hohm
  756. ;
  757. ;===============================================================================
  758. ;
  759. Func _IEIsFrameSet(ByRef $o_object)
  760.     ; Note: this is more reliable test for a FrameSet than checking the
  761.     ; number of frames (document.frames.length) because iFrames embedded on a normal
  762.     ; page are included in the frame collection even though it is not a FrameSet
  763.     If Not IsObj($o_object) Then
  764.         __IEErrorNotify("Error", "_IEIsFrameSet", "$_IEStatus_InvalidDataType")
  765.         SetError($_IEStatus_InvalidDataType, 1)
  766.         Return 0
  767.     EndIf
  768.     ;
  769.     If $o_object.document.body.tagName = "FRAMESET" Then
  770.         SetError($_IEStatus_Success)
  771.         Return 1
  772.     Else
  773.         SetError($_IEStatus_Success)
  774.         Return 0
  775.     EndIf
  776. EndFunc   ;==>_IEIsFrameSet
  777.  
  778. ;===============================================================================
  779. ;
  780. ; Function Name:    _IEFrameGetCollection()
  781. ; Description:        Returns a collection object containing the frames in a FrameSet or the iFrames on a normal page
  782. ; Parameter(s):        $o_object     - Object variable of an InternetExplorer.Application, Window or Frame object
  783. ;                    $i_index    - Optional: specifies whether to return a collection or indexed instance
  784. ;                                - 0 or positive integer returns an indexed instance
  785. ;                                - -1 = (Default) returns a collection
  786. ; Requirement(s):   AutoIt3 Beta with COM support (post 3.1.1)
  787. ; Return Value(s):  On Success     - Returns an object variable containing the Frames collection, @EXTENDED = Frame count
  788. ;                   On Failure    - Returns 0 and sets @ERROR
  789. ;                    @ERROR        - 0 ($_IEStatus_Success) = No Error
  790. ;                                - 3 ($_IEStatus_InvalidDataType) = Invalid Data Type
  791. ;                                - 5 ($_IEStatus_InvalidValue) = Invalid Value
  792. ;                                - 7 ($_IEStatus_NoMatch) = No Match
  793. ;                    @Extended    - Contains invalid parameter number
  794. ; Author(s):        Dale Hohm
  795. ;
  796. ;===============================================================================
  797. ;
  798. Func _IEFrameGetCollection(ByRef $o_object, $i_index = -1)
  799.     If Not IsObj($o_object) Then
  800.         __IEErrorNotify("Error", "_IEFrameGetCollection", "$_IEStatus_InvalidDataType")
  801.         SetError($_IEStatus_InvalidDataType, 1)
  802.         Return 0
  803.     EndIf
  804.     ;
  805.     $i_index = Number($i_index)
  806.     Select
  807.         Case $i_index = -1
  808.             SetError($_IEStatus_Success)
  809.             SetExtended($o_object.document.parentwindow.frames.length)
  810.             Return $o_object.document.parentwindow.frames
  811.         Case $i_index > - 1 And $i_index < $o_object.document.parentwindow.frames.length
  812.             SetError($_IEStatus_Success)
  813.             SetExtended($o_object.document.parentwindow.frames.length)
  814.             Return $o_object.document.parentwindow.frames.item ($i_index)
  815.         Case $i_index < - 1
  816.             __IEErrorNotify("Error", "_IEFrameGetCollection", "$_IEStatus_InvalidValue", "$i_index < -1")
  817.             SetError($_IEStatus_InvalidValue, 2)
  818.             Return 0
  819.         Case Else
  820.             __IEErrorNotify("Warning", "_IEFrameGetCollection", "$_IEStatus_NoMatch")
  821.             SetError($_IEStatus_NoMatch, 2)
  822.             Return 0
  823.     EndSelect
  824. EndFunc   ;==>_IEFrameGetCollection
  825.  
  826. ;===============================================================================
  827. ;
  828. ; Function Name:    _IEFrameGetObjByName()
  829. ; Description:        Returns an object reference to a Frame by name
  830. ; Parameter(s):        $o_object    - Object variable of an InternetExplorer.Application, Window or Frame object
  831. ;                    $s_name        - Name of the Frame you wish to match
  832. ; Requirement(s):   AutoIt3 Beta with COM support (post 3.1.1)
  833. ; Return Value(s):  On Success     - Returns an object variable pointing to the Window object in a Frame, @EXTENDED = Frame count
  834. ;                   On Failure    - Returns 0 and sets @ERROR
  835. ;                    @ERROR        - 0 ($_IEStatus_Success) = No Error
  836. ;                                - 3 ($_IEStatus_InvalidDataType) = Invalid Data Type
  837. ;                                - 4 ($_IEStatus_InvalidObjectType) = Invalid Object Type
  838. ;                                - 7 ($_IEStatus_NoMatch) = No Match
  839. ;                    @Extended    - Contains invalid parameter number
  840. ; Author(s):        Dale Hohm
  841. ;
  842. ;===============================================================================
  843. Func _IEFrameGetObjByName(ByRef $o_object, $s_Name)
  844.     If Not IsObj($o_object) Then
  845.         __IEErrorNotify("Error", "_IEFrameGetObjByName", "$_IEStatus_InvalidDataType")
  846.         SetError($_IEStatus_InvalidDataType, 1)
  847.         Return 0
  848.     EndIf
  849.     ;
  850.     Local $oTemp, $oFrames, $oFrame
  851.     
  852.     If Not __IEIsObjType($o_object, "browserdom") Then
  853.         __IEErrorNotify("Error", "_IEFrameGetObjByName", "$_IEStatus_InvalidObjectType")
  854.         SetError($_IEStatus_InvalidObjectType, 1)
  855.         Return 0
  856.     EndIf
  857.     
  858.     If __IEIsObjType($o_object, "document") Then
  859.         $oTemp = $o_object.parentWindow
  860.     Else
  861.         $oTemp = $o_object.document.parentWindow
  862.     EndIf
  863.     
  864.     If _IEIsFrameSet($oTemp) Then
  865.         $oFrames = _IETagNameGetCollection($oTemp, "frame")
  866.     Else
  867.         $oFrames = _IETagNameGetCollection($oTemp, "iframe")
  868.     EndIf
  869.     
  870.     If $oFrames.length Then
  871.         For $oFrame In $oFrames
  872.             If $oFrame.name = $s_Name Then
  873.                 SetError($_IEStatus_Success)
  874.                 Return $oTemp.frames ($s_Name)
  875.             EndIf
  876.         Next
  877.         __IEErrorNotify("Warning", "_IEFrameGetObjByName", "$_IEStatus_NoMatch", "No frames matching name")
  878.         SetError($_IEStatus_NoMatch, 2)
  879.         Return 0
  880.     Else
  881.         __IEErrorNotify("Warning", "_IEFrameGetObjByName", "$_IEStatus_NoMatch", "No Frames found")
  882.         SetError($_IEStatus_NoMatch, 2)
  883.         Return 0
  884.     EndIf
  885. EndFunc   ;==>_IEFrameGetObjByName
  886.  
  887. #endregion
  888. #region Link functions
  889. ;===============================================================================
  890. ;
  891. ; Function Name:    _IELinkClickByText()
  892. ; Description:        Simulate a mouse click on a link with text sub-string matching the string provided
  893. ; Parameter(s):        $o_object    - Object variable of an InternetExplorer.Application, Window or Frame object
  894. ;                    $s_linkText    - Text displayed on the web page for the desired link to click
  895. ;                    $i_index    - Optional: If the link text occurs more than once, specify which instance
  896. ;                                    you want to click by 0-based index
  897. ;                    $f_wait     - Optional: specifies whether to wait for page to load before returning
  898. ;                                    0 = Return immediately, not waiting for page to load
  899. ;                                    1 = (Default) Wait for page load to complete before returning
  900. ; Requirement(s):   AutoIt3 Beta with COM support (post 3.1.1)
  901. ; Return Value(s):  On Success     - Returns -1
  902. ;                   On Failure    - Returns 0 and sets @ERROR
  903. ;                    @ERROR        - 0 ($_IEStatus_Success) = No Error
  904. ;                                - 1 ($_IEStatus_GeneralError) = General Error
  905. ;                                - 3 ($_IEStatus_InvalidDataType) = Invalid Data Type
  906. ;                                - 4 ($_IEStatus_InvalidObjectType) = Invalid Object Type
  907. ;                                - 6 ($_IEStatus_LoadWaitTimeout) = Load Wait Timeout
  908. ;                                - 7 ($_IEStatus_NoMatch) = No Match
  909. ;                                - 8 ($_IEStatus_AccessIsDenied) = Access Is Denied
  910. ;                    @Extended    - Contains invalid parameter number
  911. ; Author(s):        Dale Hohm
  912. ;
  913. ;===============================================================================
  914. ;
  915. Func _IELinkClickByText(ByRef $o_object, $s_linkText, $i_index = 0, $f_wait = 1)
  916.     If Not IsObj($o_object) Then
  917.         __IEErrorNotify("Error", "_IELinkClickByText", "$_IEStatus_InvalidDataType")
  918.         SetError($_IEStatus_InvalidDataType, 1)
  919.         Return 0
  920.     EndIf
  921.     ;
  922.     Local $found = 0, $link, $linktext, $links = $o_object.document.links
  923.     $i_index = Number($i_index)
  924.     For $link In $links
  925.         $linktext = $link.outerText & "" ; Append empty string to prevent problem with no outerText (image) links
  926.         If $linktext = $s_linkText Then
  927.             if ($found = $i_index) Then
  928.                 $link.click
  929.                 If $f_wait Then
  930.                     _IELoadWait($o_object)
  931.                     SetError(@error)
  932.                     Return -1
  933.                 EndIf
  934.                 SetError($_IEStatus_Success)
  935.                 Return -1
  936.             EndIf
  937.             $found = $found + 1
  938.         EndIf
  939.     Next
  940.     __IEErrorNotify("Warning", "_IELinkClickByText", "$_IEStatus_NoMatch")
  941.     SetError($_IEStatus_NoMatch) ; Could be caused by parameter 2, 3 or both
  942.     Return 0
  943. EndFunc   ;==>_IELinkClickByText
  944.  
  945. ;===============================================================================
  946. ;
  947. ; Function Name:    _IELinkClickByIndex()
  948. ; Description:        Simulate a mouse click on a link by 0-based index (in source order)
  949. ; Parameter(s):        $o_object    - Object variable of an InternetExplorer.Application, Window or Frame object
  950. ;                    $i_index    - Optional: 0-based index of the link you wish to match
  951. ;                    $f_wait     - Optional: specifies whether to wait for page to load before returning
  952. ;                                    0 = Return immediately, not waiting for page to load
  953. ;                                    1 = (Default) Wait for page load to complete before returning
  954. ; Requirement(s):   AutoIt3 Beta with COM support (post 3.1.1)
  955. ; Return Value(s):  On Success     - Returns -1
  956. ;                   On Failure    - Returns 0 and sets @ERROR
  957. ;                    @ERROR        - 0 ($_IEStatus_Success) = No Error
  958. ;                                - 1 ($_IEStatus_GeneralError) = General Error
  959. ;                                - 3 ($_IEStatus_InvalidDataType) = Invalid Data Type
  960. ;                                - 4 ($_IEStatus_InvalidObjectType) = Invalid Object Type
  961. ;                                - 6 ($_IEStatus_LoadWaitTimeout) = Load Wait Timeout
  962. ;                                - 7 ($_IEStatus_NoMatch) = No Match
  963. ;                                - 8 ($_IEStatus_AccessIsDenied) = Access Is Denied
  964. ;                    @Extended    - Contains invalid parameter number
  965. ; Author(s):        Dale Hohm
  966. ;
  967. ;===============================================================================
  968. ;
  969. Func _IELinkClickByIndex(ByRef $o_object, $i_index, $f_wait = 1)
  970.     If Not IsObj($o_object) Then
  971.         __IEErrorNotify("Error", "_IELinkClickByIndex", "$_IEStatus_InvalidDataType")
  972.         SetError($_IEStatus_InvalidDataType, 1)
  973.         Return 0
  974.     EndIf
  975.     ;
  976.     Local $oLinks = $o_object.document.links, $oLink
  977.     $i_index = Number($i_index)
  978.     if ($i_index >= 0) and ($i_index <= $oLinks.length - 1) Then
  979.         $oLink = $oLinks ($i_index)
  980.         $oLink.click
  981.         If $f_wait Then
  982.             _IELoadWait($o_object)
  983.             SetError(@error)
  984.             Return -1
  985.         EndIf
  986.         SetError($_IEStatus_Success)
  987.         Return -1
  988.     Else
  989.         __IEErrorNotify("Warning", "_IELinkClickByIndex", "$_IEStatus_NoMatch")
  990.         SetError($_IEStatus_NoMatch, 2)
  991.         Return 0
  992.     EndIf
  993. EndFunc   ;==>_IELinkClickByIndex
  994.  
  995. ;===============================================================================
  996. ;
  997. ; Function Name:    _IELinkGetCollection()
  998. ; Description:        Returns a collection object containing all links in the document
  999. ; Parameter(s):        $o_object    - Object variable of an InternetExplorer.Application, Window or Frame object
  1000. ;                    $i_index    - Optional: specifies whether to return a collection or indexed instance
  1001. ;                                - 0 or positive integer returns an indexed instance
  1002. ;                                - -1 = (Default) returns a collection
  1003. ; Requirement(s):   AutoIt3 Beta with COM support (post 3.1.1)
  1004. ; Return Value(s):  On Success     - Returns an object collection of all links in the document, @EXTENDED = link count
  1005. ;                   On Failure    - Returns 0 and sets @ERROR
  1006. ;                    @ERROR        - 0 ($_IEStatus_Success) = No Error
  1007. ;                                - 3 ($_IEStatus_InvalidDataType) = Invalid Data Type
  1008. ;                                - 5 ($_IEStatus_InvalidValue) = Invalid Value
  1009. ;                                - 7 ($_IEStatus_NoMatch) = No Match
  1010. ;                    @Extended    - Contains invalid parameter number
  1011. ; Author(s):        Dale Hohm
  1012. ;
  1013. ;===============================================================================
  1014. ;
  1015. Func _IELinkGetCollection(ByRef $o_object, $i_index = -1)
  1016.     If Not IsObj($o_object) Then
  1017.         __IEErrorNotify("Error", "_IELinkGetCollection", "$_IEStatus_InvalidDataType")
  1018.         SetError($_IEStatus_InvalidDataType, 1)
  1019.         Return 0
  1020.     EndIf
  1021.     ;
  1022.     $i_index = Number($i_index)
  1023.     Select
  1024.         Case $i_index = -1
  1025.             SetError($_IEStatus_Success)
  1026.             SetExtended($o_object.document.links.length)
  1027.             Return $o_object.document.links
  1028.         Case $i_index > - 1 And $i_index < $o_object.document.links.length
  1029.             SetError($_IEStatus_Success)
  1030.             SetExtended($o_object.document.links.length)
  1031.             Return $o_object.document.links.item ($i_index)
  1032.         Case $i_index < - 1
  1033.             __IEErrorNotify("Error", "_IELinkGetCollection", "$_IEStatus_InvalidValue")
  1034.             SetError($_IEStatus_InvalidValue, 2)
  1035.             Return 0
  1036.         Case Else
  1037.             __IEErrorNotify("Warning", "_IELinkGetCollection", "$_IEStatus_NoMatch")
  1038.             SetError($_IEStatus_NoMatch, 2)
  1039.             Return 0
  1040.     EndSelect
  1041. EndFunc   ;==>_IELinkGetCollection
  1042. #endregion
  1043. #region Image functions
  1044. ;===============================================================================
  1045. ;
  1046. ; Function Name:    _IEImgClick()
  1047. ; Description:        Simulate a mouse click on an image.  Match by sub-string match of alt text, name or src
  1048. ; Parameter(s):        $o_object    - Object variable of an InternetExplorer.Application, Window or Frame object
  1049. ;                    $s_linkText    - Text to match the content of the attribute specified in $s_mode
  1050. ;                    $s_mode        - Optional: specifies search mode
  1051. ;                                    src = (Default) match the url of the image
  1052. ;                                    name = match the name of the image
  1053. ;                                    alt = match the alternate text of the image
  1054. ;                    $i_index    - Optional: If the img text occurs more than once, specify which instance
  1055. ;                                    you want to click by 0-based index
  1056. ;                    $f_wait     - Optional: specifies whether to wait for page to load before returning
  1057. ;                                    0 = Return immediately, not waiting for page to load
  1058. ;                                    1 = (Default) Wait for page load to complete before returning
  1059. ; Requirement(s):   AutoIt3 Beta with COM support (post 3.1.1)
  1060. ; Return Value(s):  On Success     - Returns -1
  1061. ;                   On Failure    - Returns 0 and sets @ERROR
  1062. ;                    @ERROR        - 0 ($_IEStatus_Success) = No Error
  1063. ;                                - 1 ($_IEStatus_GeneralError) = General Error
  1064. ;                                - 3 ($_IEStatus_InvalidDataType) = Invalid Data Type
  1065. ;                                - 4 ($_IEStatus_InvalidObjectType) = Invalid Object Type
  1066. ;                                - 5 ($_IEStatus_InvalidValue) = Invalid Value
  1067. ;                                - 6 ($_IEStatus_LoadWaitTimeout) = Load Wait Timeout
  1068. ;                                - 7 ($_IEStatus_NoMatch) = No Match
  1069. ;                                - 8 ($_IEStatus_AccessIsDenied) = Access Is Denied
  1070. ;                    @Extended    - Contains invalid parameter number
  1071. ; Author(s):        Dale Hohm
  1072. ;
  1073. ;===============================================================================
  1074. ;
  1075. Func _IEImgClick(ByRef $o_object, $s_linkText, $s_mode = "src", $i_index = 0, $f_wait = 1)
  1076.     If Not IsObj($o_object) Then
  1077.         __IEErrorNotify("Error", "_IEImgClick", "$_IEStatus_InvalidDataType")
  1078.         SetError($_IEStatus_InvalidDataType, 1)
  1079.         Return 0
  1080.     EndIf
  1081.     ;
  1082.     Local $linktext, $found = 0, $img, $imgs = $o_object.document.images
  1083.     $s_mode = StringLower($s_mode)
  1084.     $i_index = Number($i_index)
  1085.     For $img In $imgs
  1086.         Select
  1087.             Case $s_mode = "alt"
  1088.                 $linktext = $img.alt
  1089.             Case $s_mode = "name"
  1090.                 $linktext = $img.name
  1091.             Case $s_mode = "src"
  1092.                 $linktext = $img.src
  1093.             Case Else
  1094.                 __IEErrorNotify("Error", "_IEImgClick", "$_IEStatus_InvalidValue", "Invalid mode: " & $s_mode)
  1095.                 SetError($_IEStatus_InvalidValue, 3)
  1096.                 Return 0
  1097.         EndSelect
  1098.         If StringInStr($linktext, $s_linkText) Then
  1099.             if ($found = $i_index) Then
  1100.                 $img.click
  1101.                 If $f_wait Then
  1102.                     _IELoadWait($o_object)
  1103.                     SetError(@error)
  1104.                     Return -1
  1105.                 EndIf
  1106.                 SetError($_IEStatus_Success)
  1107.                 Return -1
  1108.             EndIf
  1109.             $found = $found + 1
  1110.         EndIf
  1111.     Next
  1112.     __IEErrorNotify("Warning", "_IEImgClick", "$_IEStatus_NoMatch")
  1113.     SetError($_IEStatus_NoMatch) ; Could be caused by parameter 2, 4 or both
  1114.     Return 0
  1115. EndFunc   ;==>_IEImgClick
  1116.  
  1117. ;===============================================================================
  1118. ;
  1119. ; Function Name:    _IEImgGetCollection()
  1120. ; Description:        Returns a collection object variable representing the IMG tags in the document
  1121. ; Parameter(s):        $o_object    - Object variable of an InternetExplorer.Application, Window, Frame or iFrame object
  1122. ;                    $i_index    - Optional: specifies whether to return a collection or indexed instance
  1123. ;                                - 0 or positive integer returns an indexed instance
  1124. ;                                - -1 = (Default) returns a collection
  1125. ; Requirement(s):   AutoIt3 Beta with COM support (post 3.1.1)
  1126. ; Return Value(s):  On Success     - Returns an object variable with a collection of all IMG tags in the document, @EXTENDED = img count
  1127. ;                   On Failure    - Returns 0 and sets @ERROR
  1128. ;                    @ERROR        - 0 ($_IEStatus_Success) = No Error
  1129. ;                                - 3 ($_IEStatus_InvalidDataType) = Invalid Data Type
  1130. ;                                - 5 ($_IEStatus_InvalidValue) = Invalid Value
  1131. ;                                - 7 ($_IEStatus_NoMatch) = No Match
  1132. ;                    @Extended    - Contains invalid parameter number
  1133. ; Author(s):        Dale Hohm
  1134. ;
  1135. ;===============================================================================
  1136. ;
  1137. Func _IEImgGetCollection(ByRef $o_object, $i_index = -1)
  1138.     If Not IsObj($o_object) Then
  1139.         __IEErrorNotify("Error", "_IEImgGetCollection", "$_IEStatus_InvalidDataType")
  1140.         SetError($_IEStatus_InvalidDataType, 1)
  1141.         Return 0
  1142.     EndIf
  1143.     ;
  1144.     Local $oTemp = _IEDocGetObj($o_object)
  1145.     $i_index = Number($i_index)
  1146.     Select
  1147.         Case $i_index = -1
  1148.             SetError($_IEStatus_Success)
  1149.             SetExtended($oTemp.images.length)
  1150.             Return $oTemp.images
  1151.         Case $i_index > - 1 And $i_index < $oTemp.images.length
  1152.             SetError($_IEStatus_Success)
  1153.             SetExtended($oTemp.images.length)
  1154.             Return $oTemp.images.item ($i_index)
  1155.         Case $i_index < - 1
  1156.             __IEErrorNotify("Error", "_IEImgGetCollection", "$_IEStatus_InvalidValue", "$i_index < -1")
  1157.             SetError($_IEStatus_InvalidValue, 2)
  1158.             Return 0
  1159.         Case Else
  1160.             __IEErrorNotify("Warning", "_IEImgGetCollection", "$_IEStatus_NoMatch")
  1161.             SetError($_IEStatus_NoMatch, 1)
  1162.             Return 0
  1163.     EndSelect
  1164. EndFunc   ;==>_IEImgGetCollection
  1165.  
  1166. #endregion
  1167. #region Form functions
  1168. ;===============================================================================
  1169. ;
  1170. ; Function Name:    _IEFormGetCollection()
  1171. ; Description:        Returns a collection object variable representing the Forms in the document
  1172. ; Parameter(s):        $o_object    - Object variable of an InternetExplorer.Application, Window, Frame or iFrame object
  1173. ;                    $i_index    - Optional: specifies whether to return a collection or indexed instance
  1174. ;                                - 0 or positive integer returns an indexed instance
  1175. ;                                - -1 = (Default) returns a collection
  1176. ; Requirement(s):   AutoIt3 Beta with COM support (post 3.1.1)
  1177. ; Return Value(s):  On Success    - Returns an object variable with a collection of all forms in the document, @EXTENDED = form count
  1178. ;                   On Failure    - Returns 0 and sets @ERROR
  1179. ;                    @ERROR        - 0 ($_IEStatus_Success) = No Error
  1180. ;                                - 3 ($_IEStatus_InvalidDataType) = Invalid Data Type
  1181. ;                                - 5 ($_IEStatus_InvalidValue) = Invalid Value
  1182. ;                                - 7 ($_IEStatus_NoMatch) = No Match
  1183. ;                    @Extended    - Contains invalid parameter number
  1184. ; Author(s):        Dale Hohm
  1185. ;
  1186. ;===============================================================================
  1187. ;
  1188. Func _IEFormGetCollection(ByRef $o_object, $i_index = -1)
  1189.     If Not IsObj($o_object) Then
  1190.         __IEErrorNotify("Error", "_IEFormGetCollection", "$_IEStatus_InvalidDataType")
  1191.         SetError($_IEStatus_InvalidDataType, 1)
  1192.         Return 0
  1193.     EndIf
  1194.     ;
  1195.     Local $oTemp = _IEDocGetObj($o_object)
  1196.     $i_index = Number($i_index)
  1197.     Select
  1198.         Case $i_index = -1
  1199.             SetError($_IEStatus_Success)
  1200.             SetExtended($oTemp.forms.length)
  1201.             Return $oTemp.forms
  1202.         Case $i_index > - 1 And $i_index < $oTemp.forms.length
  1203.             SetError($_IEStatus_Success)
  1204.             SetExtended($oTemp.forms.length)
  1205.             Return $oTemp.forms.item ($i_index)
  1206.         Case $i_index < - 1
  1207.             __IEErrorNotify("Error", "_IEFormGetCollection", "$_IEStatus_InvalidValue", "$i_index < -1")
  1208.             SetError($_IEStatus_InvalidValue, 2)
  1209.             Return 0
  1210.         Case Else
  1211.             __IEErrorNotify("Warning", "_IEFormGetCollection", "$_IEStatus_NoMatch")
  1212.             SetError($_IEStatus_NoMatch, 1)
  1213.             Return 0
  1214.     EndSelect
  1215. EndFunc   ;==>_IEFormGetCollection
  1216.  
  1217. ;===============================================================================
  1218. ;
  1219. ; Function Name:    _IEFormGetObjByName()
  1220. ; Description:        Returns an object reference to a Form by name
  1221. ; Parameter(s):        $o_object    - Object variable of an InternetExplorer.Application, Window or Frame object
  1222. ;                    $s_name        - Specifies the name of the Form you wish to match
  1223. ;                    $i_index    - Optional: If Form name occurs more than once, specifies instance by 0-based index
  1224. ;                                - 0 (Default) or positive integer returns an indexed instance
  1225. ;                                - -1 returns a collection of the specified Forms
  1226. ; Requirement(s):   AutoIt3 Beta with COM support (post 3.1.1)
  1227. ; Return Value(s):  On Success     - Returns an object variable pointing to the Form object, @EXTENDED = form count
  1228. ;                   On Failure    - Returns 0 and sets @ERROR
  1229. ;                    @ERROR        - 0 ($_IEStatus_Success) = No Error
  1230. ;                                - 3 ($_IEStatus_InvalidDataType) = Invalid Data Type
  1231. ;                                - 7 ($_IEStatus_NoMatch) = No Match
  1232. ;                    @Extended    - Contains invalid parameter number
  1233. ; Author(s):        Dale Hohm
  1234. ;
  1235. ;===============================================================================
  1236. ;
  1237. Func _IEFormGetObjByName(ByRef $o_object, $s_Name, $i_index = 0)
  1238.     If Not IsObj($o_object) Then
  1239.         __IEErrorNotify("Error", "_IEFormGetObjByName", "$_IEStatus_InvalidDataType")
  1240.         SetError($_IEStatus_InvalidDataType, 1)
  1241.         Return 0
  1242.     EndIf
  1243.     ;
  1244.     ;----- Determine valid collection length
  1245.     Local $o_col, $i_length = 0
  1246.     $o_col = $o_object.document.forms.item ($s_Name)
  1247.     If IsObj($o_col) Then
  1248.         If __IEIsObjType($o_col, "elementcollection") Then
  1249.             $i_length = $o_col.length
  1250.         Else
  1251.             $i_length = 1
  1252.         EndIf
  1253.     EndIf
  1254.     ;-----
  1255.     $i_index = Number($i_index)
  1256.     If $i_index = -1 Then
  1257.         SetError($_IEStatus_Success)
  1258.         SetExtended($i_length)
  1259.         Return $o_object.document.forms.item ($s_Name)
  1260.     Else
  1261.         If IsObj($o_object.document.forms.item ($s_Name, $i_index)) Then
  1262.             SetError($_IEStatus_Success)
  1263.             SetExtended($i_length)
  1264.             Return $o_object.document.forms.item ($s_Name, $i_index)
  1265.         Else
  1266.             __IEErrorNotify("Warning", "_IEFormGetObjByName", "$_IEStatus_NoMatch")
  1267.             SetError($_IEStatus_NoMatch) ; Could be caused by parameter 2, 3 or both
  1268.             Return 0
  1269.         EndIf
  1270.     EndIf
  1271. EndFunc   ;==>_IEFormGetObjByName
  1272.  
  1273. ;===============================================================================
  1274. ;
  1275. ; Function Name:    _IEFormElementGetCollection()
  1276. ; Description:        Returns a collection object variable representing all Form Elements within a given Form
  1277. ; Parameter(s):        $o_object    - Object variable of an InternetExplorer.Application, Form object
  1278. ;                    $i_index    - Optional: specifies whether to return a collection or indexed instance
  1279. ;                                - 0 or positive integer returns an indexed instance
  1280. ;                                - -1 = (Default) returns a collection
  1281. ; Requirement(s):   AutoIt3 Beta with COM support (post 3.1.1)
  1282. ; Return Value(s):  On Success     - Returns an object variable containing the Form Elements collection, @EXTENDED = form element count
  1283. ;                   On Failure    - Returns 0 and sets @ERROR
  1284. ;                    @ERROR        - 0 ($_IEStatus_Success) = No Error
  1285. ;                                - 3 ($_IEStatus_InvalidDataType) = Invalid Data Type
  1286. ;                                - 4 ($_IEStatus_InvalidObjectType) = Invalid Object Type
  1287. ;                                - 5 ($_IEStatus_InvalidValue) = Invalid Value
  1288. ;                                - 7 ($_IEStatus_NoMatch) = No Match
  1289. ;                    @Extended    - Contains invalid parameter number
  1290. ; Author(s):        Dale Hohm
  1291. ;
  1292. ;===============================================================================
  1293. ;
  1294. Func _IEFormElementGetCollection(ByRef $o_object, $i_index = -1)
  1295.     If Not IsObj($o_object) Then
  1296.         __IEErrorNotify("Error", "_IEFormElementGetCollection", "$_IEStatus_InvalidDataType")
  1297.         SetError($_IEStatus_InvalidDataType, 1)
  1298.         Return 0
  1299.     EndIf
  1300.     ;
  1301.     If Not __IEIsObjType($o_object, "form") Then
  1302.         __IEErrorNotify("Error", "_IEFormElementGetCollection", "$_IEStatus_InvalidObjectType")
  1303.         SetError($_IEStatus_InvalidObjectType, 1)
  1304.         Return 0
  1305.     EndIf
  1306.     ;
  1307.     $i_index = Number($i_index)
  1308.     Select
  1309.         Case $i_index = -1
  1310.             SetError($_IEStatus_Success)
  1311.             SetExtended($o_object.elements.length)
  1312.             Return $o_object.elements
  1313.         Case $i_index > - 1 And $i_index < $o_object.elements.length
  1314.             SetError($_IEStatus_Success)
  1315.             SetExtended($o_object.elements.length)
  1316.             Return $o_object.elements.item ($i_index)
  1317.         Case $i_index < - 1
  1318.             __IEErrorNotify("Error", "_IEFormElementGetCollection", "$_IEStatus_InvalidValue", "$i_index < -1")
  1319.             SetError($_IEStatus_InvalidValue, 2)
  1320.             Return 0
  1321.         Case Else
  1322.             SetError($_IEStatus_NoMatch, 1)
  1323.             Return 0
  1324.     EndSelect
  1325. EndFunc   ;==>_IEFormElementGetCollection
  1326.  
  1327. ;===============================================================================
  1328. ;
  1329. ; Function Name:    _IEFormElementGetObjByName()
  1330. ; Description:        Returns an object reference to a Form Element by name
  1331. ; Parameter(s):        $o_object    - Object variable of an InternetExplorer.Application, Form object
  1332. ;                    $s_name        - Specifies the name of the Form Element you wish to match
  1333. ;                    $i_index    - Optional: If the Form Element name occurs more than once, specifies instance by 0-based index
  1334. ;                                - 0 (Default) or positive integer returns an indexed instance
  1335. ;                                - -1 returns a collection of the specified Form Elements
  1336. ; Requirement(s):   AutoIt3 Beta with COM support (post 3.1.1)
  1337. ; Return Value(s):  On Success     - Returns an object variable pointing to the Form Element object, @EXTENDED = form count
  1338. ;                   On Failure    - Returns 0 and sets @ERROR
  1339. ;                    @ERROR        - 0 ($_IEStatus_Success) = No Error
  1340. ;                                - 3 ($_IEStatus_InvalidDataType) = Invalid Data Type
  1341. ;                                - 4 ($_IEStatus_InvalidObjectType) = Invalid Object Type
  1342. ;                                - 7 ($_IEStatus_NoMatch) = No Match
  1343. ;                    @Extended    - Contains invalid parameter number
  1344. ; Author(s):        Dale Hohm
  1345. ;
  1346. ;===============================================================================
  1347. ;
  1348. Func _IEFormElementGetObjByName(ByRef $o_object, $s_Name, $i_index = 0)
  1349.     If Not IsObj($o_object) Then
  1350.         __IEErrorNotify("Error", "_IEFormElementGetObjByName", "$_IEStatus_InvalidDataType")
  1351.         SetError($_IEStatus_InvalidDataType, 1)
  1352.         Return 0
  1353.     EndIf
  1354.     ;
  1355.     If Not __IEIsObjType($o_object, "form") Then
  1356.         __IEErrorNotify("Error", "_IEFormElementGetObjByName", "$_IEStatus_InvalidObjectType")
  1357.         SetError($_IEStatus_InvalidObjectType, 1)
  1358.         Return 0
  1359.     EndIf
  1360.     ;
  1361.     ;----- Determine valid collection length
  1362.     Local $o_col, $i_length = 0
  1363.     $o_col = $o_object.elements.item ($s_Name)
  1364.     If IsObj($o_col) Then
  1365.         If __IEIsObjType($o_col, "elementcollection") Then
  1366.             $i_length = $o_col.length
  1367.         Else
  1368.             $i_length = 1
  1369.         EndIf
  1370.     EndIf
  1371.     ;-----
  1372.     $i_index = Number($i_index)
  1373.     If $i_index = -1 Then
  1374.         SetError($_IEStatus_Success)
  1375.         SetExtended($i_length)
  1376.         Return $o_object.elements.item ($s_Name)
  1377.     Else
  1378.         If IsObj($o_object.elements.item ($s_Name, $i_index)) Then
  1379.             SetError($_IEStatus_Success)
  1380.             SetExtended($i_length)
  1381.             Return $o_object.elements.item ($s_Name, $i_index)
  1382.         Else
  1383.             __IEErrorNotify("Warning", "_IEFormElementGetObjByName", "$_IEStatus_NoMatch")
  1384.             SetError($_IEStatus_NoMatch) ; Could be caused by parameter 2, 3 or both
  1385.             Return 0
  1386.         EndIf
  1387.     EndIf
  1388. EndFunc   ;==>_IEFormElementGetObjByName
  1389.  
  1390. ;===============================================================================
  1391. ;
  1392. ; Function Name:    _IEFormElementGetValue()
  1393. ; Description:        Returns the value of a given Form Element
  1394. ; Parameter(s):        $o_object    - Object variable of an InternetExplorer.Application, Form Element object
  1395. ; Requirement(s):   AutoIt3 Beta with COM support (post 3.1.1)
  1396. ; Return Value(s):  On Success     - Returns the string value of the given Form Element
  1397. ;                   On Failure    - Returns 0 and sets @ERROR
  1398. ;                    @ERROR        - 0 ($_IEStatus_Success) = No Error
  1399. ;                                - 3 ($_IEStatus_InvalidDataType) = Invalid Data Type
  1400. ;                                - 4 ($_IEStatus_InvalidObjectType) = Invalid Object Type
  1401. ;                    @Extended    - Contains invalid parameter number
  1402. ; Author(s):        Dale Hohm
  1403. ;
  1404. ;===============================================================================
  1405. ;
  1406. Func _IEFormElementGetValue(ByRef $o_object)
  1407.     If Not IsObj($o_object) Then
  1408.         __IEErrorNotify("Error", "_IEFormElementGetValue", "$_IEStatus_InvalidDataType")
  1409.         SetError($_IEStatus_InvalidDataType, 1)
  1410.         Return 0
  1411.     EndIf
  1412.     ;
  1413.     If Not __IEIsObjType($o_object, "forminputelement") Then
  1414.         __IEErrorNotify("Error", "_IEFormElementGetValue", "$_IEStatus_InvalidObjectType")
  1415.         SetError($_IEStatus_InvalidObjectType, 1)
  1416.         Return 0
  1417.     EndIf
  1418.     ;
  1419.     SetError($_IEStatus_Success)
  1420.     Return $o_object.value
  1421. EndFunc   ;==>_IEFormElementGetValue
  1422.  
  1423. ;===============================================================================
  1424. ;
  1425. ; Function Name:    _IEFormElementSetValue()
  1426. ; Description:        Set the value of a specified Form Element
  1427. ; Parameter(s):        $o_object    - Object variable of an InternetExplorer.Application, Form Element object
  1428. ;                    $s_newvalue    - The new value to be set into the Form Element
  1429. ;                    $f_fireEvent- Optional: specifies whether to fire an OnChange event after changing value
  1430. ;                                        0 = Do not fire OnChange event after setting value
  1431. ;                                        1 = (Default) fire OnChange event after setting value
  1432. ; Requirement(s):   AutoIt3 Beta with COM support (post 3.1.1)
  1433. ; Return Value(s):  On Success     - Returns 1
  1434. ;                   On Failure    - Returns 0 and sets @ERROR
  1435. ;                    @ERROR        - 0 ($_IEStatus_Success) = No Error
  1436. ;                                - 3 ($_IEStatus_InvalidDataType) = Invalid Data Type
  1437. ;                                - 4 ($_IEStatus_InvalidObjectType) = Invalid Object Type
  1438. ;                    @Extended    - Contains invalid parameter number
  1439. ; Author(s):        Dale Hohm
  1440. ;
  1441. ;===============================================================================
  1442. ;
  1443. Func _IEFormElementSetValue(ByRef $o_object, $s_newvalue, $f_fireEvent = 1)
  1444.     If Not IsObj($o_object) Then
  1445.         __IEErrorNotify("Error", "_IEFormElementSetValue", "$_IEStatus_InvalidDataType")
  1446.         SetError($_IEStatus_InvalidDataType, 1)
  1447.         Return 0
  1448.     EndIf
  1449.     ;
  1450.     If Not __IEIsObjType($o_object, "forminputelement") Then
  1451.         __IEErrorNotify("Error", "_IEFormElementSetValue", "$_IEStatus_InvalidObjectType")
  1452.         SetError($_IEStatus_InvalidObjectType, 1)
  1453.         Return 0
  1454.     EndIf
  1455.     ;
  1456.     $o_object.value = $s_newvalue
  1457.     If $f_fireEvent Then
  1458.         $o_object.fireEvent ("OnChange")
  1459.     EndIf
  1460.     SetError($_IEStatus_Success)
  1461.     Return 1
  1462. EndFunc   ;==>_IEFormElementSetValue
  1463.  
  1464. ;===============================================================================
  1465. ;
  1466. ; Function Name:    _IEFormElementOptionSelect()
  1467. ; Description:        Set the value of a specified form element
  1468. ; Parameter(s):        $o_object    - Form Element Object of type "Select Option"
  1469. ;                    $s_string    - Value used to match element - treatment based on $s_mode
  1470. ;                    $f_select    - Optional: specifies whether element should be selected or deselected
  1471. ;                                    -1 = Return selected state
  1472. ;                                    0 = Deselect the element
  1473. ;                                    1 = (Default) Select the element
  1474. ;                    $s_mode     - Optional: specifies search mode
  1475. ;                                    byValue = (Default) value of the option you wish to select
  1476. ;                                    byText    = text of the option you wish to select
  1477. ;                                    byIndex = 0-based index of option you wish to select
  1478. ;                    $f_fireEvent- Optional: specifies whether to fire an OnChange event after changing value
  1479. ;                                    0 = do not fire OnChange event after setting value
  1480. ;                                    1 = (Default) fire OnChange event after setting value
  1481. ; Requirement(s):   AutoIt3 Beta with COM support (post 3.1.1)
  1482. ; Return Value(s):  On Success     - If $f_select = -1, returns the current selected state, else returns 1
  1483. ;                   On Failure    - Returns 0 and sets @ERROR
  1484. ;                    @ERROR        - 0 ($_IEStatus_Success) = No Error
  1485. ;                                - 3 ($_IEStatus_InvalidDataType) = Invalid Data Type
  1486. ;                                - 4 ($_IEStatus_InvalidObjectType) = Invalid Object Type
  1487. ;                                - 5 ($_IEStatus_InvalidValue) = Invalid Value
  1488. ;                                - 7 ($_IEStatus_NoMatch) = No Match
  1489. ;                    @Extended    - Contains invalid parameter number
  1490. ; Author(s):        Dale Hohm
  1491. ;
  1492. ;===============================================================================
  1493. ;
  1494. Func _IEFormElementOptionSelect(ByRef $o_object, $s_string, $f_select = 1, $s_mode = "byValue", $f_fireEvent = 1)
  1495.     If Not IsObj($o_object) Then
  1496.         __IEErrorNotify("Error", "_IEFormElementOptionSelect", "$_IEStatus_InvalidDataType")
  1497.         SetError($_IEStatus_InvalidDataType, 1)
  1498.         Return 0
  1499.     EndIf
  1500.     ;
  1501.     If Not __IEIsObjType($o_object, "formselectelement") Then
  1502.         __IEErrorNotify("Error", "_IEFormElementOptionSelect", "$_IEStatus_InvalidObjectType")
  1503.         SetError($_IEStatus_InvalidObjectType, 1)
  1504.         Return 0
  1505.     EndIf
  1506.     ;
  1507.     Local $oItem, $oItems = $o_object.options, $iNumItems = $o_object.options.length, $f_isMultiple = $o_object.multiple
  1508.     
  1509.     Switch $s_mode
  1510.         Case "byValue"
  1511.             For $oItem In $oItems
  1512.                 If $oItem.value = $s_string Then
  1513.                     Switch $f_select
  1514.                         Case (-1)
  1515.                             SetError($_IEStatus_Success)
  1516.                             Return $oItem.selected
  1517.                         Case 0
  1518.                             If Not $f_isMultiple Then
  1519.                                 __IEErrorNotify("Error", "_IEFormElementOptionSelect", "$_IEStatus_InvalidValue", _
  1520.                                         "$f_select=0 only valid for type=select multiple")
  1521.                                 SetError($_IEStatus_InvalidValue, 3)
  1522.                             EndIf
  1523.                             If $oItem.selected Then
  1524.                                 $oItem.selected = False
  1525.                                 If $f_fireEvent Then $o_object.fireEvent ("onChange")
  1526.                             EndIf
  1527.                             SetError($_IEStatus_Success)
  1528.                             Return 1
  1529.                         Case 1
  1530.                             If Not $oItem.selected Then
  1531.                                 $oItem.selected = True
  1532.                                 If $f_fireEvent Then $o_object.fireEvent ("onChange")
  1533.                             EndIf
  1534.                             SetError($_IEStatus_Success)
  1535.                             Return 1
  1536.                         Case Else
  1537.                             __IEErrorNotify("Error", "_IEFormElementOptionSelect", "$_IEStatus_InvalidValue", "Invalid $f_select value")
  1538.                             SetError($_IEStatus_InvalidValue, 3)
  1539.                             Return 0
  1540.                     EndSwitch
  1541.                     __IEErrorNotify("Warning", "_IEFormElementOptionSelect", "$_IEStatus_NoMatch", "Value not matched")
  1542.                     SetError($_IEStatus_NoMatch, 2)
  1543.                     Return 0
  1544.                 EndIf
  1545.             Next
  1546.         Case "byText"
  1547.             For $oItem In $oItems
  1548.                 If $oItem.text = $s_string Then
  1549.                     Switch $f_select
  1550.                         Case (-1)
  1551.                             SetError($_IEStatus_Success)
  1552.                             Return $oItem.selected
  1553.                         Case 0
  1554.                             If Not $f_isMultiple Then
  1555.                                 __IEErrorNotify("Error", "_IEFormElementOptionSelect", "$_IEStatus_InvalidValue", _
  1556.                                         "$f_select=0 only valid for type=select multiple")
  1557.                                 SetError($_IEStatus_InvalidValue, 3)
  1558.                             EndIf
  1559.                             If $oItem.selected Then
  1560.                                 $oItem.selected = False
  1561.                                 If $f_fireEvent Then $o_object.fireEvent ("onChange")
  1562.                             EndIf
  1563.                             SetError($_IEStatus_Success)
  1564.                             Return 1
  1565.                         Case 1
  1566.                             If Not $oItem.selected Then
  1567.                                 $oItem.selected = True
  1568.                                 If $f_fireEvent Then $o_object.fireEvent ("onChange")
  1569.                             EndIf
  1570.                             SetError($_IEStatus_Success)
  1571.                             Return 1
  1572.                         Case Else
  1573.                             __IEErrorNotify("Error", "_IEFormElementOptionSelect", "$_IEStatus_InvalidValue", "Invalid $f_select value")
  1574.                             SetError($_IEStatus_InvalidValue, 3)
  1575.                             Return 0
  1576.                     EndSwitch
  1577.                     __IEErrorNotify("Warning", "_IEFormElementOptionSelect", "$_IEStatus_NoMatch", "Text not matched")
  1578.                     SetError($_IEStatus_NoMatch, 2)
  1579.                     Return 0
  1580.                 EndIf
  1581.             Next
  1582.         Case "byIndex"
  1583.             Local $i_index = Number($s_string)
  1584.             If $i_index < 0 Or $i_index >= $iNumItems Then
  1585.                 __IEErrorNotify("Error", "_IEFormElementOptionSelect", "$_IEStatus_InvalidValue", "Invalid index value, " & $i_index)
  1586.                 SetError($_IEStatus_InvalidValue, 2)
  1587.                 Return 0
  1588.             EndIf
  1589.             $oItem = $oItems.item ($i_index)
  1590.             Switch $f_select
  1591.                 Case (-1)
  1592.                     SetError($_IEStatus_Success)
  1593.                     Return $oItems.item ($i_index).selected
  1594.                 Case 0
  1595.                     If Not $f_isMultiple Then
  1596.                         __IEErrorNotify("Error", "_IEFormElementOptionSelect", "$_IEStatus_InvalidValue", _
  1597.                                 "$f_select=0 only valid for type=select multiple")
  1598.                         SetError($_IEStatus_InvalidValue, 3)
  1599.                     EndIf
  1600.                     If $oItem.selected Then
  1601.                         $oItems.item ($i_index).selected = False
  1602.                         If $f_fireEvent Then $o_object.fireEvent ("onChange")
  1603.                     EndIf
  1604.                     SetError($_IEStatus_Success)
  1605.                     Return 1
  1606.                 Case 1
  1607.                     If Not $oItem.selected Then
  1608.                         $oItems.item ($i_index).selected = True
  1609.                         If $f_fireEvent Then $o_object.fireEvent ("onChange")
  1610.                     EndIf
  1611.                     SetError($_IEStatus_Success)
  1612.                     Return 1
  1613.                 Case Else
  1614.                     __IEErrorNotify("Error", "_IEFormElementOptionSelect", "$_IEStatus_InvalidValue", "Invalid $f_select value")
  1615.                     SetError($_IEStatus_InvalidValue, 3)
  1616.                     Return 0
  1617.             EndSwitch
  1618.         Case Else
  1619.             __IEErrorNotify("Error", "_IEFormElementOptionSelect", "$_IEStatus_InvalidValue", "Invalid Mode")
  1620.             SetError($_IEStatus_InvalidValue, 4)
  1621.             Return 0
  1622.     EndSwitch
  1623. EndFunc   ;==>_IEFormElementOptionSelect
  1624.  
  1625. ;===============================================================================
  1626. ;
  1627. ; Function Name:    _IEFormElementCheckboxSelect()
  1628. ; Description:        Set the value of a specified form element
  1629. ; Parameter(s):        $o_object    - Object variable of an InternetExplorer.Application, Form object
  1630. ;                    $s_string    - Value used to match element - treatment based on $s_mode
  1631. ;                    $s_name        - Optional: Name or Id of checkbox(es)
  1632. ;                    $f_select    - Optional: specifies whether element should be checked or unchecked
  1633. ;                                    -1 = Return checked state
  1634. ;                                    0 = Uncheck the element
  1635. ;                                    1 = (Default) Check the element
  1636. ;                    $s_mode     - Optional: specifies search mode
  1637. ;                                    byValue = (Default) value of the checkbox you wish to select
  1638. ;                                    byIndex = 0-based index of checkbox you wish to select
  1639. ;                    $f_fireEvent- Optional: specifies whether to fire an OnChange event after changing value
  1640. ;                                    0 = do not fire OnChange event after setting value
  1641. ;                                    1 = (Default) fire OnChange event after setting value
  1642. ; Requirement(s):   AutoIt3 Beta with COM support (post 3.1.1)
  1643. ; Return Value(s):  On Success     - If $f_select = -1, returns the current checked state, else returns 1
  1644. ;                   On Failure    - Returns 0 and sets @ERROR
  1645. ;                    @ERROR        - 0 ($_IEStatus_Success) = No Error
  1646. ;                                - 3 ($_IEStatus_InvalidDataType) = Invalid Data Type
  1647. ;                                - 4 ($_IEStatus_InvalidObjectType) = Invalid Object Type
  1648. ;                                - 5 ($_IEStatus_InvalidValue) = Invalid Value
  1649. ;                                - 7 ($_IEStatus_NoMatch) = No Match
  1650. ;                    @Extended    - Contains invalid parameter number
  1651. ; Author(s):        Dale Hohm
  1652. ;
  1653. ;===============================================================================
  1654. ;
  1655. Func _IEFormElementCheckboxSelect(ByRef $o_object, $s_string, $s_Name = "", $f_select = 1, $s_mode = "byValue", $f_fireEvent = 1)
  1656.     If Not IsObj($o_object) Then
  1657.         __IEErrorNotify("Error", "_IEFormElementCheckboxSelect", "$_IEStatus_InvalidDataType")
  1658.         SetError($_IEStatus_InvalidDataType, 1)
  1659.         Return 0
  1660.     EndIf
  1661.     ;
  1662.     If Not __IEIsObjType($o_object, "form") Then
  1663.         __IEErrorNotify("Error", "_IEFormElementCheckboxSelect", "$_IEStatus_InvalidObjectType")
  1664.         SetError($_IEStatus_InvalidObjectType, 1)
  1665.         Return 0
  1666.     EndIf
  1667.     ;
  1668.     Local $iCount, $oItem, $oItems
  1669.     
  1670.     If $s_Name = "" Then
  1671.         $oItems = _IETagNameGetCollection($o_object, "input")
  1672.     Else
  1673.         $oItems = Execute("$o_object." & $s_Name)
  1674.     EndIf
  1675.     
  1676.     If Not IsObj($oItems) Then
  1677.         __IEErrorNotify("Warning", "_IEFormElementCheckboxSelect", "$_IEStatus_NoMatch")
  1678.         SetError($_IEStatus_NoMatch, 3)
  1679.         Return 0
  1680.     EndIf
  1681.     
  1682.     Switch $s_mode
  1683.         Case "byValue"
  1684.             For $oItem In $oItems
  1685.                 If $oItem.type = "checkbox" And $oItem.value = $s_string Then
  1686.                     Switch $f_select
  1687.                         Case (-1)
  1688.                             SetError($_IEStatus_Success)
  1689.                             Return $oItem.checked
  1690.                         Case 0
  1691.                             If $oItem.checked Then
  1692.                                 $oItem.checked = False
  1693.                                 If $f_fireEvent Then $oItem.fireEvent ("onChange")
  1694.                             EndIf
  1695.                             SetError($_IEStatus_Success)
  1696.                             Return 1
  1697.                         Case 1
  1698.                             If Not $oItem.checked Then
  1699.                                 $oItem.checked = True
  1700.                                 If $f_fireEvent Then $oItem.fireEvent ("onChange")
  1701.                             EndIf
  1702.                             SetError($_IEStatus_Success)
  1703.                             Return 1
  1704.                         Case Else
  1705.                             __IEErrorNotify("Error", "_IEFormElementCheckboxSelect", "$_IEStatus_InvalidValue", "Invalid $f_select value")
  1706.                             SetError($_IEStatus_InvalidValue, 3)
  1707.                             Return 0
  1708.                     EndSwitch
  1709.                 EndIf
  1710.             Next
  1711.             __IEErrorNotify("Warning", "_IEFormElementCheckboxSelect", "$_IEStatus_NoMatch")
  1712.             SetError($_IEStatus_NoMatch, 2)
  1713.             Return 0
  1714.         Case "byIndex"
  1715.             $iCount = 0
  1716.             For $oItem In $oItems
  1717.                 If $oItem.type = "checkbox" And Number($s_string) = $iCount Then
  1718.                     Switch $f_select
  1719.                         Case (-1)
  1720.                             SetError($_IEStatus_Success)
  1721.                             Return $oItem.checked
  1722.                         Case 0
  1723.                             If $oItem.checked Then
  1724.                                 $oItem.checked = False
  1725.                                 If $f_fireEvent Then $oItem.fireEvent ("onChange")
  1726.                             EndIf
  1727.                             SetError($_IEStatus_Success)
  1728.                             Return 1
  1729.                         Case 1
  1730.                             If Not $oItem.checked Then
  1731.                                 $oItem.checked = True
  1732.                                 If $f_fireEvent Then $oItem.fireEvent ("onChange")
  1733.                             EndIf
  1734.                             SetError($_IEStatus_Success)
  1735.                             Return 1
  1736.                         Case Else
  1737.                             __IEErrorNotify("Error", "_IEFormElementCheckboxSelect", "$_IEStatus_InvalidValue", "Invalid $f_select value")
  1738.                             SetError($_IEStatus_InvalidValue, 3)
  1739.                             Return 0
  1740.                     EndSwitch
  1741.                 Else
  1742.                     If $oItem.type = "checkbox" Then $iCount += 1
  1743.                 EndIf
  1744.             Next
  1745.             __IEErrorNotify("Warning", "_IEFormElementCheckboxSelect", "$_IEStatus_NoMatch")
  1746.             SetError($_IEStatus_NoMatch, 2)
  1747.             Return 0
  1748.         Case Else
  1749.             __IEErrorNotify("Error", "_IEFormElementCheckboxSelect", "$_IEStatus_InvalidValue", "Invalid Mode")
  1750.             SetError($_IEStatus_InvalidValue, 5)
  1751.             Return 0
  1752.     EndSwitch
  1753. EndFunc   ;==>_IEFormElementCheckboxSelect
  1754.  
  1755. ;===============================================================================
  1756. ;
  1757. ; Function Name:    _IEFormElementRadioSelect()
  1758. ; Description:        Set the value of a specified form element
  1759. ; Parameter(s):        $o_object    - Object variable of an InternetExplorer.Application, Form object
  1760. ;                    $s_string    - Value used to match element - treatment based on $s_mode
  1761. ;                    $s_name        - Name or Id of Radio Group (required)
  1762. ;                    $f_select    - Optional: specifies whether element should be selected or deselected
  1763. ;                                    -1 = Return selected state
  1764. ;                                    0 = Deselect the element
  1765. ;                                    1 = (Default) Select the element
  1766. ;                    $s_mode     - Optional: specifies search mode
  1767. ;                                    byValue = (Default) value of the radio you wish to select
  1768. ;                                    byIndex = 0-based index of radio you wish to select
  1769. ;                    $f_fireEvent- Optional: specifies whether to fire an OnChange event after changing value
  1770. ;                                    0 = do not fire OnChange event after setting value
  1771. ;                                    1 = (Default) fire OnChange event after setting value
  1772. ; Requirement(s):   AutoIt3 Beta with COM support (post 3.1.1)
  1773. ; Return Value(s):  On Success     - If $f_select = -1, returns the current selected state, else returns 1
  1774. ;                   On Failure    - Returns 0 and sets @ERROR
  1775. ;                    @ERROR        - 0 ($_IEStatus_Success) = No Error
  1776. ;                                - 3 ($_IEStatus_InvalidDataType) = Invalid Data Type
  1777. ;                                - 4 ($_IEStatus_InvalidObjectType) = Invalid Object Type
  1778. ;                                - 5 ($_IEStatus_InvalidValue) = Invalid Value
  1779. ;                                - 7 ($_IEStatus_NoMatch) = No Match
  1780. ;                    @Extended    - Contains invalid parameter number
  1781. ; Author(s):        Dale Hohm
  1782. ;
  1783. ;===============================================================================
  1784. ;
  1785. Func _IEFormElementRadioSelect(ByRef $o_object, $s_string, $s_Name, $f_select = 1, $s_mode = "byValue", $f_fireEvent = 1)
  1786.     If Not IsObj($o_object) Then
  1787.         __IEErrorNotify("Error", "_IEFormElementRadioSelect", "$_IEStatus_InvalidDataType")
  1788.         SetError($_IEStatus_InvalidDataType, 1)
  1789.         Return 0
  1790.     EndIf
  1791.     ;
  1792.     If Not __IEIsObjType($o_object, "form") Then
  1793.         __IEErrorNotify("Error", "_IEFormElementRadioSelect", "$_IEStatus_InvalidObjectType")
  1794.         SetError($_IEStatus_InvalidObjectType, 1)
  1795.         Return 0
  1796.     EndIf
  1797.     ;
  1798.     Local $iCount = 0, $oItem, $oItems
  1799.     
  1800.     $oItems = Execute("$o_object." & $s_Name)
  1801.     If Not IsObj($oItems) Then
  1802.         __IEErrorNotify("Warning", "_IEFormElementRadioSelect", "$_IEStatus_NoMatch")
  1803.         SetError($_IEStatus_NoMatch, 3)
  1804.         Return 0
  1805.     EndIf
  1806.     
  1807.     Switch $s_mode
  1808.         Case "byValue"
  1809.             For $oItem In $oItems
  1810.                 If $oItem.type = "radio" And $oItem.value = $s_string Then
  1811.                     Switch $f_select
  1812.                         Case (-1)
  1813.                             SetError($_IEStatus_Success)
  1814.                             Return $oItem.checked
  1815.                         Case 0
  1816.                             If $oItem.checked Then
  1817.                                 $oItem.checked = False
  1818.                                 If $f_fireEvent Then $oItem.fireEvent ("onChange")
  1819.                             EndIf
  1820.                             SetError($_IEStatus_Success)
  1821.                             Return 1
  1822.                         Case 1
  1823.                             If Not $oItem.checked Then
  1824.                                 $oItem.checked = True
  1825.                                 If $f_fireEvent Then $oItem.fireEvent ("onChange")
  1826.                             EndIf
  1827.                             SetError($_IEStatus_Success)
  1828.                             Return 1
  1829.                         Case Else
  1830.                             __IEErrorNotify("Error", "_IEFormElementRadioSelect", "$_IEStatus_InvalidValue", "$f_select value invalid")
  1831.                             SetError($_IEStatus_InvalidValue, 4)
  1832.                             Return 0
  1833.                     EndSwitch
  1834.                 EndIf
  1835.             Next
  1836.         Case "byIndex"
  1837.             $iCount = 0
  1838.             For $oItem In $oItems
  1839.                 If $oItem.type = "radio" And Number($s_string) = $iCount Then
  1840.                     Switch $f_select
  1841.                         Case (-1)
  1842.                             SetError($_IEStatus_Success)
  1843.                             Return $oItem.checked
  1844.                         Case 0
  1845.                             If $oItem.checked Then
  1846.                                 $oItem.checked = False
  1847.                                 If $f_fireEvent Then $oItem.fireEvent ("onChange")
  1848.                             EndIf
  1849.                             SetError($_IEStatus_Success)
  1850.                             Return 1
  1851.                         Case 1
  1852.                             If Not $oItem.checked Then
  1853.                                 $oItem.checked = True
  1854.                                 If $f_fireEvent Then $oItem.fireEvent ("onChange")
  1855.                             EndIf
  1856.                             SetError($_IEStatus_Success)
  1857.                             Return 1
  1858.                         Case Else
  1859.                             __IEErrorNotify("Error", "_IEFormElementRadioSelect", "$_IEStatus_InvalidValue", "$f_select value invalid")
  1860.                             SetError($_IEStatus_InvalidValue, 4)
  1861.                             Return 0
  1862.                     EndSwitch
  1863.                 Else
  1864.                     $iCount = $iCount + 1
  1865.                 EndIf
  1866.             Next
  1867.             __IEErrorNotify("Warning", "_IEFormElementRadioSelect", "$_IEStatus_NoMatch")
  1868.             SetError($_IEStatus_NoMatch, 2)
  1869.             Return 0
  1870.         Case Else
  1871.             __IEErrorNotify("Error", "_IEFormElementRadioSelect", "$_IEStatus_InvalidValue", "Invalid Mode")
  1872.             SetError($_IEStatus_InvalidValue, 5)
  1873.             Return 0
  1874.     EndSwitch
  1875. EndFunc   ;==>_IEFormElementRadioSelect
  1876.  
  1877. ;===============================================================================
  1878. ;
  1879. ; Function Name:    _IEFormImageClick()
  1880. ; Description:        Simulate a mouse click on an <INPUT TYPE="Image">.  Match by sub-string match of alt text, name or src
  1881. ; Parameter(s):        $o_object    - Object variable of any DOM element (will be converted to the associated document object)
  1882. ;                    $s_linkText    - Value used to match element - treatment based on $s_mode
  1883. ;                    $s_mode        - Optional: specifies search mode
  1884. ;                                    src = (Default) match the url of the image
  1885. ;                                    name = match the name of the image
  1886. ;                                    alt = match the alternate text of the image
  1887. ;                    $i_index    - Optional: If the img text occurs more than once, specifies which instance
  1888. ;                                    you want to click by 0-based index
  1889. ;                    $f_wait     - Optional: specifies whether to wait for page to load before returning
  1890. ;                                    0 = Return immediately, not waiting for page to load
  1891. ;                                    1 = (Default) Wait for page load to complete before returning
  1892. ; Requirement(s):   AutoIt3 Beta with COM support (post 3.1.1)
  1893. ; Return Value(s):  On Success     - Returns -1
  1894. ;                   On Failure    - Returns 0 and sets @ERROR
  1895. ;                    @ERROR        - 0 ($_IEStatus_Success) = No Error
  1896. ;                                - 1 ($_IEStatus_GeneralError) = General Error
  1897. ;                                - 3 ($_IEStatus_InvalidDataType) = Invalid Data Type
  1898. ;                                - 4 ($_IEStatus_InvalidObjectType) = Invalid Object Type
  1899. ;                                - 5 ($_IEStatus_InvalidValue) = Invalid Value
  1900. ;                                - 6 ($_IEStatus_LoadWaitTimeout) = Load Wait Timeout
  1901. ;                                - 7 ($_IEStatus_NoMatch) = No Match
  1902. ;                                - 8 ($_IEStatus_AccessIsDenied) = Access Is Denied
  1903. ;                    @Extended    - Contains invalid parameter number
  1904. ; Author(s):        Dale Hohm
  1905. ;
  1906. ;===============================================================================
  1907. ;
  1908. Func _IEFormImageClick(ByRef $o_object, $s_linkText, $s_mode = "src", $i_index = 0, $f_wait = 1)
  1909.     If Not IsObj($o_object) Then
  1910.         __IEErrorNotify("Error", "_IEFormImageClick", "$_IEStatus_InvalidDataType")
  1911.         SetError($_IEStatus_InvalidDataType, 1)
  1912.         Return 0
  1913.     EndIf
  1914.     ;
  1915.     Local $linktext, $found = 0, $img, $imgs
  1916.     Local $oTemp = _IEDocGetObj($o_object)
  1917.     $imgs = _IETagNameGetCollection($oTemp, "input")
  1918.     $s_mode = StringLower($s_mode)
  1919.     $i_index = Number($i_index)
  1920.     For $img In $imgs
  1921.         If $img.type = "image" Then
  1922.             Select
  1923.                 Case $s_mode = "alt"
  1924.                     $linktext = $img.alt
  1925.                 Case $s_mode = "name"
  1926.                     $linktext = $img.name
  1927.                 Case $s_mode = "src"
  1928.                     $linktext = $img.src
  1929.                 Case Else
  1930.                     __IEErrorNotify("Error", "_IEFormImageClick", "$_IEStatus_InvalidValue", "Invalid mode: " & $s_mode)
  1931.                     SetError($_IEStatus_InvalidValue, 3)
  1932.                     Return 0
  1933.             EndSelect
  1934.             If StringInStr($linktext, $s_linkText) Then
  1935.                 if ($found = $i_index) Then
  1936.                     $img.click
  1937.                     If $f_wait Then
  1938.                         _IELoadWait($o_object)
  1939.                         SetError(@error)
  1940.                         Return -1
  1941.                     EndIf
  1942.                     SetError($_IEStatus_Success)
  1943.                     Return -1
  1944.                 EndIf
  1945.                 $found = $found + 1
  1946.             EndIf
  1947.         EndIf
  1948.     Next
  1949.     __IEErrorNotify("Warning", "_IEFormImageClick", "$_IEStatus_NoMatch")
  1950.     SetError($_IEStatus_NoMatch, 2)
  1951.     Return 0
  1952. EndFunc   ;==>_IEFormImageClick
  1953.  
  1954. ;===============================================================================
  1955. ;
  1956. ; Function Name:    _IEFormSubmit()
  1957. ; Description:        Submit a specified Form
  1958. ; Parameter(s):        $o_object    - Object variable of an InternetExplorer.Application, Form object
  1959. ;                    $f_wait        - Optional: specifies whether to wait for page to load before returning
  1960. ;                                    0 = Return immediately, not waiting for page to load
  1961. ;                                    1 = (Default) Wait for page load to complete before returning
  1962. ; Requirement(s):   AutoIt3 Beta with COM support (post 3.1.1)
  1963. ; Return Value(s):  On Success     - Returns -1
  1964. ;                   On Failure    - Returns 0 and sets @ERROR
  1965. ;                    @ERROR        - 0 ($_IEStatus_Success) = No Error
  1966. ;                                - 1 ($_IEStatus_GeneralError) = General Error
  1967. ;                                - 3 ($_IEStatus_InvalidDataType) = Invalid Data Type
  1968. ;                                - 4 ($_IEStatus_InvalidObjectType) = Invalid Object Type
  1969. ;                                - 6 ($_IEStatus_LoadWaitTimeout) = Load Wait Timeout
  1970. ;                                - 8 ($_IEStatus_AccessIsDenied) = Access Is Denied
  1971. ;                    @Extended    - Contains invalid parameter number
  1972. ; Author(s):        Dale Hohm
  1973. ;
  1974. ;===============================================================================
  1975. ;
  1976. Func _IEFormSubmit(ByRef $o_object, $f_wait = 1)
  1977.     If Not IsObj($o_object) Then
  1978.         __IEErrorNotify("Error", "_IEFormSubmit", "$_IEStatus_InvalidDataType")
  1979.         SetError($_IEStatus_InvalidDataType, 1)
  1980.         Return 0
  1981.     EndIf
  1982.     ;
  1983.     If Not __IEIsObjType($o_object, "form") Then
  1984.         __IEErrorNotify("Error", "_IEFormSubmit", "$_IEStatus_InvalidObjectType")
  1985.         SetError($_IEStatus_InvalidObjectType, 1)
  1986.         Return 0
  1987.     EndIf
  1988.     ;
  1989.     SetError($_IEStatus_Success)
  1990.     Local $o_window = $o_object.document.parentWindow
  1991.     $o_object.submit
  1992.     If $f_wait Then
  1993.         _IELoadWait($o_window)
  1994.         SetError(@error)
  1995.         Return -1
  1996.     EndIf
  1997.     Return -1
  1998. EndFunc   ;==>_IEFormSubmit
  1999.  
  2000. ;===============================================================================
  2001. ;
  2002. ; Function Name:   _IEFormReset()
  2003. ; Description:        Reset a specified Form
  2004. ; Parameter(s):        $o_object    - Object variable of an InternetExplorer.Application, Form object
  2005. ; Requirement(s):   AutoIt3 Beta with COM support (post 3.1.1)
  2006. ; Return Value(s):  On Success     - Returns 1
  2007. ;                   On Failure    - Returns 0 and sets @ERROR
  2008. ;                    @ERROR        - 0 ($_IEStatus_Success) = No Error
  2009. ;                                - 3 ($_IEStatus_InvalidDataType) = Invalid Data Type
  2010. ;                                - 4 ($_IEStatus_InvalidObjectType) = Invalid Object Type
  2011. ;                    @Extended    - Contains invalid parameter number
  2012. ; Author(s):        Dale Hohm
  2013. ;
  2014. ;===============================================================================
  2015. ;
  2016. Func _IEFormReset(ByRef $o_object)
  2017.     If Not IsObj($o_object) Then
  2018.         __IEErrorNotify("Error", "_IEFormReset", "$_IEStatus_InvalidDataType")
  2019.         SetError($_IEStatus_InvalidDataType, 1)
  2020.         Return 0
  2021.     EndIf
  2022.     ;
  2023.     If Not __IEIsObjType($o_object, "form") Then
  2024.         __IEErrorNotify("Error", "_IEFormReset", "$_IEStatus_InvalidObjectType")
  2025.         SetError($_IEStatus_InvalidObjectType, 1)
  2026.         Return 0
  2027.     EndIf
  2028.     ;
  2029.     SetError($_IEStatus_Success)
  2030.     $o_object.reset
  2031.     Return 1
  2032. EndFunc   ;==>_IEFormReset
  2033. #endregion
  2034. #region Table functions
  2035. ;===============================================================================
  2036. ;
  2037. ; Function Name:    _IETableGetCollection()
  2038. ; Description:        Returns a collection object variable representing all the tables in a document
  2039. ; Parameter(s):        $o_object    - Object variable of an InternetExplorer.Application, Window or Frame object
  2040. ;                    $i_index    - Optional: specifies whether to return a collection or indexed instance
  2041. ;                                - 0 or positive integer returns an indexed instance
  2042. ;                                - -1 = (Default) returns a collection
  2043. ; Requirement(s):   AutoIt3 Beta with COM support (post 3.1.1)
  2044. ; Return Value(s):  On Success     - Returns an object collection of all tables in the document, @EXTENDED = table count
  2045. ;                   On Failure    - Returns 0 and sets @ERROR
  2046. ;                    @ERROR        - 0 ($_IEStatus_Success) = No Error
  2047. ;                                - 3 ($_IEStatus_InvalidDataType) = Invalid Data Type
  2048. ;                                - 5 ($_IEStatus_InvalidValue) = Invalid Value
  2049. ;                                - 7 ($_IEStatus_NoMatch) = No Match
  2050. ;                    @Extended    - Contains invalid parameter number
  2051. ; Author(s):        Dale Hohm
  2052. ;
  2053. ;===============================================================================
  2054. ;
  2055. Func _IETableGetCollection(ByRef $o_object, $i_index = -1)
  2056.     If Not IsObj($o_object) Then
  2057.         __IEErrorNotify("Error", "_IETableGetCollection", "$_IEStatus_InvalidDataType")
  2058.         SetError($_IEStatus_InvalidDataType, 1)
  2059.         Return 0
  2060.     EndIf
  2061.     ;
  2062.     $i_index = Number($i_index)
  2063.     Select
  2064.         Case $i_index = -1
  2065.             SetError($_IEStatus_Success)
  2066.             SetExtended($o_object.document.GetElementsByTagName ("table").length)
  2067.             Return $o_object.document.GetElementsByTagName ("table")
  2068.         Case $i_index > - 1 And $i_index < $o_object.document.GetElementsByTagName ("table").length
  2069.             SetError($_IEStatus_Success)
  2070.             SetExtended($o_object.document.GetElementsByTagName ("table").length)
  2071.             Return $o_object.document.GetElementsByTagName ("table").item ($i_index)
  2072.         Case $i_index < - 1
  2073.             __IEErrorNotify("Error", "_IETableGetCollection", "$_IEStatus_InvalidValue", "$i_index < -1")
  2074.             SetError($_IEStatus_InvalidValue, 2)
  2075.             Return 0
  2076.         Case Else
  2077.             __IEErrorNotify("Warning", "_IETableGetCollection", "$_IEStatus_NoMatch")
  2078.             SetError($_IEStatus_NoMatch, 1)
  2079.             Return 0
  2080.     EndSelect
  2081. EndFunc   ;==>_IETableGetCollection
  2082.  
  2083. ;===============================================================================
  2084. ;
  2085. ; Function Name:    _IETableWriteToArray()
  2086. ; Description:        Reads the contents of a Table into an array
  2087. ; Parameter(s):        $o_object    - Object variable of an InternetExplorer.Application, Table object
  2088. ; Requirement(s):   AutoIt3 Beta with COM support (post 3.1.1)
  2089. ; Return Value(s):  On Success     - Returns a 2-dimensional array containing the contents of the Table
  2090. ;                   On Failure    - Returns 0 and sets @ERROR
  2091. ;                    @ERROR        - 0 ($_IEStatus_Success) = No Error
  2092. ;                                - 3 ($_IEStatus_InvalidDataType) = Invalid Data Type
  2093. ;                                - 4 ($_IEStatus_InvalidObjectType) = Invalid Object Type
  2094. ;                    @Extended    - Contains invalid parameter number
  2095. ; Author(s):        Dale Hohm
  2096. ;
  2097. ;===============================================================================
  2098. ;
  2099. Func _IETableWriteToArray(ByRef $o_object)
  2100.     If Not IsObj($o_object) Then
  2101.         __IEErrorNotify("Error", "_IETableWriteToArray", "$_IEStatus_InvalidDataType")
  2102.         SetError($_IEStatus_InvalidDataType, 1)
  2103.         Return 0
  2104.     EndIf
  2105.     ;
  2106.     If Not __IEIsObjType($o_object, "table") Then
  2107.         __IEErrorNotify("Error", "_IETableWriteToArray", "$_IEStatus_InvalidObjectType")
  2108.         SetError($_IEStatus_InvalidObjectType, 1)
  2109.         Return 0
  2110.     EndIf
  2111.     ;
  2112.     Local $i_cols = 0, $trs, $tr, $tds, $i_col, $i_rows, $col, $row
  2113.     $trs = $o_object.rows
  2114.     For $tr In $trs
  2115.         $tds = $tr.GetElementsByTagName ("td")
  2116.         $i_col = 0
  2117.         For $td In $tds
  2118.             $i_col = $i_col + $td.colSpan
  2119.         Next
  2120.         If $i_col > $i_cols Then $i_cols = $i_col
  2121.     Next
  2122.     $i_rows = $trs.length
  2123.     Local $a_TableCells[$i_cols][$i_rows]
  2124.     $row = 0
  2125.     For $tr In $trs
  2126.         $tds = $tr.GetElementsByTagName ("td")
  2127.         $col = 0
  2128.         For $td In $tds
  2129.             $a_TableCells[$col][$row] = $td.innerText
  2130.             $col = $col + $td.colSpan
  2131.         Next
  2132.         $row = $row + 1
  2133.     Next
  2134.     SetError($_IEStatus_Success)
  2135.     Return $a_TableCells
  2136. EndFunc   ;==>_IETableWriteToArray
  2137. #endregion
  2138. #region Read/Write functions
  2139. ;===============================================================================
  2140. ;
  2141. ; Function Name:    _IEBodyReadHTML()
  2142. ; Description:        Returns the HTML inside the <body> tag of the document
  2143. ; Parameter(s):     $o_object     - Object variable of an InternetExplorer.Application, Window or Frame object
  2144. ; Requirement(s):   AutoIt3 Beta with COM support (post 3.1.1)
  2145. ; Return Value(s):  On Success     - Returns HTML included in the <body> of the docuement
  2146. ;                   On Failure    - Returns 0 and sets @ERROR
  2147. ;                    @ERROR        - 0 ($_IEStatus_Success) = No Error
  2148. ;                                - 3 ($_IEStatus_InvalidDataType) = Invalid Data Type
  2149. ;                    @Extended    - Contains invalid parameter number
  2150. ; Author(s):        Dale Hohm
  2151. ;
  2152. ;===============================================================================
  2153. ;
  2154. Func _IEBodyReadHTML(ByRef $o_object)
  2155.     If Not IsObj($o_object) Then
  2156.         __IEErrorNotify("Error", "_IEBodyReadHTML", "$_IEStatus_InvalidDataType")
  2157.         SetError($_IEStatus_InvalidDataType, 1)
  2158.         Return 0
  2159.     EndIf
  2160.     ;
  2161.     SetError($_IEStatus_Success)
  2162.     Return $o_object.document.body.innerHTML
  2163. EndFunc   ;==>_IEBodyReadHTML
  2164.  
  2165. ;===============================================================================
  2166. ;
  2167. ; Function Name:    _IEBodyReadText()
  2168. ; Description:        Returns the Text inside the <body> tag of the document
  2169. ; Parameter(s):     $o_object     - Object variable of an InternetExplorer.Application, Window or Frame object
  2170. ; Requirement(s):   AutoIt3 Beta with COM support (post 3.1.1)
  2171. ; Return Value(s):  On Success     - Returns the Text included in the <body> of the docuement
  2172. ;                   On Failure    - Returns 0 and sets @ERROR
  2173. ;                    @ERROR        - 0 ($_IEStatus_Success) = No Error
  2174. ;                                - 3 ($_IEStatus_InvalidDataType) = Invalid Data Type
  2175. ;                    @Extended    - Contains invalid parameter number
  2176. ; Author(s):        Dale Hohm
  2177. ;
  2178. ;===============================================================================
  2179. ;
  2180. Func _IEBodyReadText(ByRef $o_object)
  2181.     If Not IsObj($o_object) Then
  2182.         __IEErrorNotify("Error", "_IEBodyReadText", "$_IEStatus_InvalidDataType")
  2183.         SetError($_IEStatus_InvalidDataType, 1)
  2184.         Return 0
  2185.     EndIf
  2186.     ;
  2187.     SetError($_IEStatus_Success)
  2188.     Return $o_object.document.body.innerText
  2189. EndFunc   ;==>_IEBodyReadText
  2190.  
  2191. ;===============================================================================
  2192. ;
  2193. ; Function Name:    _IEBodyWriteHTML()
  2194. ; Description:        Replaces the HTML inside the <body> tag of the document
  2195. ; Parameter(s):     $o_object     - Object variable of an InternetExplorer.Application, Window or Frame object
  2196. ;                    $s_html        - The HTML string to write to the document
  2197. ; Requirement(s):   AutoIt3 Beta with COM support (post 3.1.1)
  2198. ; Return Value(s):  On Success     - Returns -1
  2199. ;                   On Failure    - Returns 0 and sets @ERROR
  2200. ;                    @ERROR        - 0 ($_IEStatus_Success) = No Error
  2201. ;                                - 1 ($_IEStatus_GeneralError) = General Error
  2202. ;                                - 3 ($_IEStatus_InvalidDataType) = Invalid Data Type
  2203. ;                                - 4 ($_IEStatus_InvalidObjectType) = Invalid Object Type
  2204. ;                                - 6 ($_IEStatus_LoadWaitTimeout) = Load Wait Timeout
  2205. ;                                - 8 ($_IEStatus_AccessIsDenied) = Access Is Denied
  2206. ;                    @Extended    - Contains invalid parameter number
  2207. ; Author(s):        Dale Hohm
  2208. ;
  2209. ;===============================================================================
  2210. ;
  2211. Func _IEBodyWriteHTML(ByRef $o_object, $s_html)
  2212.     If Not IsObj($o_object) Then
  2213.         __IEErrorNotify("Error", "_IEBodyWriteHTML", "$_IEStatus_InvalidDataType")
  2214.         SetError($_IEStatus_InvalidDataType, 1)
  2215.         Return 0
  2216.     EndIf
  2217.     ;
  2218.     $o_object.document.body.innerHTML = $s_html
  2219.     Local $oTemp = $o_object.document
  2220.     _IELoadWait($oTemp)
  2221.     SetError(@error)
  2222.     Return -1
  2223. EndFunc   ;==>_IEBodyWriteHTML
  2224.  
  2225. ;===============================================================================
  2226. ;
  2227. ; Function Name:    _IEDocReadHTML()
  2228. ; Description:        Returns the full HTML source of a document
  2229. ; Parameter(s):     $o_object     - Object variable of an InternetExplorer.Application, Window or Frame object
  2230. ; Requirement(s):   AutoIt3 Beta with COM support (post 3.1.1)
  2231. ; Return Value(s):  On Success     - Returns the HTML included in the <HTML> of the docuement, including the <HTML> and </HTML> tags
  2232. ;                   On Failure    - Returns 0 and sets @ERROR
  2233. ;                    @ERROR        - 0 ($_IEStatus_Success) = No Error
  2234. ;                                - 3 ($_IEStatus_InvalidDataType) = Invalid Data Type
  2235. ;                    @Extended    - Contains invalid parameter number
  2236. ; Author(s):        Dale Hohm
  2237. ;
  2238. ;===============================================================================
  2239. ;
  2240. Func _IEDocReadHTML(ByRef $o_object)
  2241.     If Not IsObj($o_object) Then
  2242.         __IEErrorNotify("Error", "_IEDocReadHTML", "$_IEStatus_InvalidDataType")
  2243.         SetError($_IEStatus_InvalidDataType, 1)
  2244.         Return 0
  2245.     EndIf
  2246.     ;
  2247.     SetError($_IEStatus_Success)
  2248.     Return $o_object.document.documentElement.outerHTML
  2249. EndFunc   ;==>_IEDocReadHTML
  2250.  
  2251. ;===============================================================================
  2252. ;
  2253. ; Function Name:    _IEDocWriteHTML()
  2254. ; Description:        Replaces the HTML for the entire document
  2255. ; Parameter(s):     $o_object     - Object variable of an InternetExplorer.Application, Window or Frame object
  2256. ;                    $s_html        - The HTML string to write to the document
  2257. ; Requirement(s):   AutoIt3 Beta with COM support (post 3.1.1)
  2258. ; Return Value(s):  On Success     - Returns -1
  2259. ;                   On Failure    - Returns 0 and sets @ERROR
  2260. ;                    @ERROR        - 0 ($_IEStatus_Success) = No Error
  2261. ;                                - 1 ($_IEStatus_GeneralError) = General Error
  2262. ;                                - 3 ($_IEStatus_InvalidDataType) = Invalid Data Type
  2263. ;                                - 4 ($_IEStatus_InvalidObjectType) = Invalid Object Type
  2264. ;                                - 6 ($_IEStatus_LoadWaitTimeout) = Load Wait Timeout
  2265. ;                                - 8 ($_IEStatus_AccessIsDenied) = Access Is Denied
  2266. ;                    @Extended    - Contains invalid parameter number
  2267. ; Author(s):        Dale Hohm
  2268. ;
  2269. ;===============================================================================
  2270. ;
  2271. Func _IEDocWriteHTML(ByRef $o_object, $s_html)
  2272.     If Not IsObj($o_object) Then
  2273.         __IEErrorNotify("Error", "_IEDocWriteHTML", "$_IEStatus_InvalidDataType")
  2274.         SetError($_IEStatus_InvalidDataType, 1)
  2275.         Return 0
  2276.     EndIf
  2277.     ;
  2278.     $o_object.document.Write ($s_html)
  2279.     $o_object.document.close ()
  2280.     Local $oTemp = $o_object.document
  2281.     _IELoadWait($oTemp)
  2282.     SetError(@error)
  2283.     Return -1
  2284. EndFunc   ;==>_IEDocWriteHTML
  2285.  
  2286. ;===============================================================================
  2287. ;
  2288. ; Function Name:    _IEHeadInsertEventScript()
  2289. ; Description:        Inserts a Javascript into the Head of the document
  2290. ; Parameter(s):     $o_object    - Object variable of an InternetExplorer.Application, Window or Frame object
  2291. ;                   $s_htmlFor  - The HTML element for event monitoring (e.g. "document" or an element ID)
  2292. ;                   $s_event    - The event to monitor (e.g. "onclick" or "oncontextmenu")
  2293. ;                   $s_script   - Javascript string to be executed
  2294. ; Requirement(s):   AutoIt3 Beta with COM support (post 3.1.1)
  2295. ; Return Value(s):  On Success     - Returns 1
  2296. ;                   On Failure    - Returns 0 and sets @ERROR
  2297. ;                    @ERROR        - 0 ($_IEStatus_Success) = No Error
  2298. ;                                - 3 ($_IEStatus_InvalidDataType) = Invalid Data Type
  2299. ;                    @Extended    - Contains invalid parameter number
  2300. ; Author(s):        Dale Hohm
  2301. ;
  2302. ;===============================================================================
  2303. ;
  2304. Func _IEHeadInsertEventScript(ByRef $o_object, $s_htmlFor, $s_event, $s_script)
  2305.     If Not IsObj($o_object) Then
  2306.         __IEErrorNotify("Error", "_IEHeadInsertEventScript", "$_IEStatus_InvalidDataType")
  2307.         SetError($_IEStatus_InvalidDataType, 1)
  2308.         Return 0
  2309.     EndIf
  2310.     
  2311.     Local $o_head = $o_object.document.all.tags ("HEAD").Item (0)
  2312.     Local $o_script = $o_object.document.createElement ("script")
  2313.     With $o_script
  2314.         .defer = True
  2315.         .language = "jscript"
  2316.         .type = "text/javascript"
  2317.         .htmlFor = $s_htmlFor
  2318.         .event = $s_event
  2319.         .text = $s_script
  2320.     EndWith
  2321.     $o_head.appendChild ($o_script)
  2322.     SetError($_IEStatus_Success)
  2323.     Return 1
  2324. EndFunc   ;==>_IEHeadInsertEventScript
  2325. #endregion
  2326. #region Utility functions
  2327. ;===============================================================================
  2328. ;
  2329. ; Function Name:    _IEDocGetObj()
  2330. ; Description:        Given any DOM object, returns a reference to the associated document object
  2331. ; Parameter(s):        $o_object    - Object variable of an InternetExplorer.Application, Window or Frame object
  2332. ; Requirement(s):   AutoIt3 Beta with COM support (post 3.1.1)
  2333. ; Return Value(s):  On Success     - Returns an object variable pointing to the Document object
  2334. ;                   On Failure    - Returns 0 and sets @ERROR
  2335. ;                    @ERROR        - 0 ($_IEStatus_Success) = No Error
  2336. ;                                - 3 ($_IEStatus_InvalidDataType) = Invalid Data Type
  2337. ;                    @Extended    - Contains invalid parameter number
  2338. ; Author(s):        Dale Hohm
  2339. ;
  2340. ;===============================================================================
  2341. ;
  2342. Func _IEDocGetObj(ByRef $o_object)
  2343.     If Not IsObj($o_object) Then
  2344.         __IEErrorNotify("Error", "_IEDocGetObj", "$_IEStatus_InvalidDataType")
  2345.         SetError($_IEStatus_InvalidDataType, 1)
  2346.         Return 0
  2347.     EndIf
  2348.     ;
  2349.     Switch __IEIsObjType($o_object, "document")
  2350.         Case True
  2351.             SetError($_IEStatus_Success)
  2352.             Return $o_object
  2353.         Case False
  2354.             SetError($_IEStatus_Success)
  2355.             Return $o_object.document
  2356.     EndSwitch
  2357. EndFunc   ;==>_IEDocGetObj
  2358.  
  2359. ;===============================================================================
  2360. ;
  2361. ; Function Name:    _IETagNameGetCollection()
  2362. ; Description:        Returns a collection object of all elements in the object with the specified TagName.
  2363. ; Parameter(s):        $o_object    - Object variable of an InternetExplorer.Application, Window, Frame, iFrame or any object in the DOM
  2364. ;                    $s_TagName    - TagName of collection to return (e.g. IMG, TR etc.)
  2365. ;                    $i_index    - Optional: specifies whether to return a collection or indexed instance
  2366. ;                                - 0 or positive integer returns an indexed instance
  2367. ;                                - -1 = (Default) returns a collection
  2368. ; Requirement(s):   AutoIt3 Beta with COM support (post 3.1.1)
  2369. ; Return Value(s):  On Success     - Returns an object variable containing the specified Tag collection, @EXTENDED = specified Tag count
  2370. ;                   On Failure    - Returns 0 and sets @ERROR
  2371. ;                    @ERROR        - 0 ($_IEStatus_Success) = No Error
  2372. ;                                - 3 ($_IEStatus_InvalidDataType) = Invalid Data Type
  2373. ;                                - 4 ($_IEStatus_InvalidObjectType) = Invalid Object Type
  2374. ;                                - 5 ($_IEStatus_InvalidValue) = Invalid Value
  2375. ;                                - 7 ($_IEStatus_NoMatch) = No Match
  2376. ;                    @Extended    - Contains invalid parameter number
  2377. ; Author(s):        Dale Hohm
  2378. ;
  2379. ;===============================================================================
  2380. ;
  2381. Func _IETagNameGetCollection(ByRef $o_object, $s_TagName, $i_index = -1)
  2382.     If Not IsObj($o_object) Then
  2383.         __IEErrorNotify("Error", "_IETagNameGetCollection", "$_IEStatus_InvalidDataType")
  2384.         SetError($_IEStatus_InvalidDataType, 1)
  2385.         Return 0
  2386.     EndIf
  2387.     ;
  2388.     If Not __IEIsObjType($o_object, "browserdom") Then
  2389.         __IEErrorNotify("Error", "_IETagNameGetCollection", "$_IEStatus_InvalidObjectType")
  2390.         SetError($_IEStatus_InvalidObjectType, 1)
  2391.         Return 0
  2392.     EndIf
  2393.     
  2394.     Local $oTemp
  2395.     If __IEIsObjType($o_object, "documentcontainer") Then
  2396.         $oTemp = _IEDocGetObj($o_object)
  2397.     Else
  2398.         $oTemp = $o_object
  2399.     EndIf
  2400.     
  2401.     $i_index = Number($i_index)
  2402.     Select
  2403.         Case $i_index = -1
  2404.             SetError($_IEStatus_Success)
  2405.             SetExtended($oTemp.GetElementsByTagName ($s_TagName).length)
  2406.             Return $oTemp.GetElementsByTagName ($s_TagName)
  2407.         Case $i_index > - 1 And $i_index < $oTemp.GetElementsByTagName ($s_TagName).length
  2408.             SetError($_IEStatus_Success)
  2409.             SetExtended($oTemp.GetElementsByTagName ($s_TagName).length)
  2410.             Return $oTemp.GetElementsByTagName ($s_TagName).item ($i_index)
  2411.         Case $i_index < - 1
  2412.             __IEErrorNotify("Error", "_IETagNameGetCollection", "$_IEStatus_InvalidValue", "$i_index < -1")
  2413.             SetError($_IEStatus_InvalidValue, 3)
  2414.             Return 0
  2415.         Case Else
  2416.             __IEErrorNotify("Error", "_IETagNameGetCollection", "$_IEStatus_NoMatch")
  2417.             SetError($_IEStatus_NoMatch) ; Could be caused by parameter 2, 3 or both
  2418.             Return 0
  2419.     EndSelect
  2420. EndFunc   ;==>_IETagNameGetCollection
  2421.  
  2422. ;===============================================================================
  2423. ;
  2424. ; Function Name:    _IETagNameAllGetCollection()
  2425. ; Description:        Returns a collection object all elements in the document or document hierarchy in source order.
  2426. ; Parameter(s):        $o_object    - Object variable of an InternetExplorer.Application, Window, Frame, iFrame or any object in the DOM
  2427. ;                    $i_index    - Optional: specifies whether to return a collection or indexed instance
  2428. ;                                - 0 or positive integer returns an indexed instance
  2429. ;                                - -1 = (Default) returns a collection
  2430. ; Requirement(s):   AutoIt3 Beta with COM support (post 3.1.1)
  2431. ; Return Value(s):  On Success     - Returns an object variable containing the Tag collection, @EXTENDED = Tag count
  2432. ;                   On Failure    - Returns 0 and sets @ERROR
  2433. ;                    @ERROR        - 0 ($_IEStatus_Success) = No Error
  2434. ;                                - 3 ($_IEStatus_InvalidDataType) = Invalid Data Type
  2435. ;                                - 4 ($_IEStatus_InvalidObjectType) = Invalid Object Type
  2436. ;                                - 5 ($_IEStatus_InvalidValue) = Invalid Value
  2437. ;                                - 7 ($_IEStatus_NoMatch) = No Match
  2438. ;                    @Extended    - Contains invalid parameter number
  2439. ; Author(s):        Dale Hohm
  2440. ;
  2441. ;===============================================================================
  2442. ;
  2443. Func _IETagNameAllGetCollection(ByRef $o_object, $i_index = -1)
  2444.     If Not IsObj($o_object) Then
  2445.         __IEErrorNotify("Error", "_IETagNameAllGetCollection", "$_IEStatus_InvalidDataType")
  2446.         SetError($_IEStatus_InvalidDataType, 1)
  2447.         Return 0
  2448.     EndIf
  2449.     ;
  2450.     If Not __IEIsObjType($o_object, "browserdom") Then
  2451.         __IEErrorNotify("Error", "_IETagNameAllGetCollection", "$_IEStatus_InvalidObjectType")
  2452.         SetError($_IEStatus_InvalidObjectType, 1)
  2453.         Return 0
  2454.     EndIf
  2455.     
  2456.     Local $oTemp
  2457.     If __IEIsObjType($o_object, "documentcontainer") Then
  2458.         $oTemp = _IEDocGetObj($o_object)
  2459.     Else
  2460.         $oTemp = $o_object
  2461.     EndIf
  2462.     
  2463.     $i_index = Number($i_index)
  2464.     Select
  2465.         Case $i_index = -1
  2466.             SetError($_IEStatus_Success)
  2467.             SetExtended($oTemp.all.length)
  2468.             Return $oTemp.all
  2469.         Case $i_index > - 1 And $i_index < $oTemp.all.length
  2470.             SetError($_IEStatus_Success)
  2471.             SetExtended($oTemp.all.length)
  2472.             Return $oTemp.all.item ($i_index)
  2473.         Case $i_index < - 1
  2474.             __IEErrorNotify("Error", "_IETagNameAllGetCollection", "$_IEStatus_InvalidValue", "$i_index < -1")
  2475.             SetError($_IEStatus_InvalidValue, 2)
  2476.             Return 0
  2477.         Case Else
  2478.             __IEErrorNotify("Error", "_IETagNameAllGetCollection", "$_IEStatus_NoMatch")
  2479.             SetError($_IEStatus_NoMatch, 1)
  2480.             Return 0
  2481.     EndSelect
  2482. EndFunc   ;==>_IETagNameAllGetCollection
  2483.  
  2484. ;===============================================================================
  2485. ;
  2486. ; Function Name:    _IEGetObjByName()
  2487. ; Description:        Returns an object variable by Id or name
  2488. ; Parameter(s):        $o_object    - Object variable of an InternetExplorer.Application, Window or Frame object
  2489. ;                    $s_Id        - Specifies name or id of the object you wish to match
  2490. ;                    $i_index    - Optional: If Name of Id occurs more than once, specifies instance by 0-based index
  2491. ;                                - 0 (Default) or positive integer returns an indexed instance
  2492. ;                                - -1 returns a collection of the specified objects
  2493. ; Requirement(s):   AutoIt3 Beta with COM support (post 3.1.1)
  2494. ; Return Value(s):  On Success     - Returns an object variable pointing to the specified Object, @EXTENDED = specified object count
  2495. ;                   On Failure    - Returns 0 and sets @ERROR
  2496. ;                    @ERROR        - 0 ($_IEStatus_Success) = No Error
  2497. ;                                - 3 ($_IEStatus_InvalidDataType) = Invalid Data Type
  2498. ;                                - 7 ($_IEStatus_NoMatch) = No Match
  2499. ;                    @Extended    - Contains invalid parameter number
  2500. ; Author(s):        Dale Hohm
  2501. ;
  2502. ;===============================================================================
  2503. ;
  2504. Func _IEGetObjByName(ByRef $o_object, $s_Id, $i_index = 0)
  2505.     If Not IsObj($o_object) Then
  2506.         __IEErrorNotify("Error", "_IEGetObjByName", "$_IEStatus_InvalidDataType")
  2507.         SetError($_IEStatus_InvalidDataType, 1)
  2508.         Return 0
  2509.     EndIf
  2510.     ;
  2511.     $i_index = Number($i_index)
  2512.     If $i_index = -1 Then
  2513.         SetError($_IEStatus_Success)
  2514.         SetExtended($o_object.document.GetElementsByName ($s_Id).length)
  2515.         Return $o_object.document.GetElementsByName ($s_Id)
  2516.     Else
  2517.         If IsObj($o_object.document.GetElementsByName ($s_Id).item ($i_index)) Then
  2518.             SetError($_IEStatus_Success)
  2519.             SetExtended($o_object.document.GetElementsByName ($s_Id).length)
  2520.             Return $o_object.document.GetElementsByName ($s_Id).item ($i_index)
  2521.         Else
  2522.             __IEErrorNotify("Warning", "_IEGetObjByName", "$_IEStatus_NoMatch")
  2523.             SetError($_IEStatus_NoMatch) ; Could be caused by parameter 2, 3 or both
  2524.             Return 0
  2525.         EndIf
  2526.     EndIf
  2527. EndFunc   ;==>_IEGetObjByName
  2528.  
  2529. ;===============================================================================
  2530. ;
  2531. ; Function Name:    _IEAction()
  2532. ; Description:      Perform any of a set of simple actions on the Browser
  2533. ; Parameter(s):     $o_object    - Object variable of an InternetExplorer.Application
  2534. ;                    $s_action    - Action selection
  2535. ; Requirement(s):   AutoIt3 Beta with COM support (post 3.1.1)
  2536. ; Return Value(s):  On Success     - Returns 1
  2537. ;                   On Failure    - Returns 0 and sets @ERROR
  2538. ;                    @ERROR        - 0 ($_IEStatus_Success) = No Error
  2539. ;                                - 3 ($_IEStatus_InvalidDataType) = Invalid Data Type
  2540. ;                                - 4 ($_IEStatus_InvalidObjectType) = Invalid Object Type
  2541. ;                                - 5 ($_IEStatus_InvalidValue) = Invalid Value
  2542. ;                    @Extended    - Contains invalid parameter number
  2543. ; Author(s):        Dale Hohm
  2544. ;
  2545. ;===============================================================================
  2546. ;
  2547. Func _IEAction(ByRef $o_object, $s_action)
  2548.     If Not IsObj($o_object) Then
  2549.         __IEErrorNotify("Error", "_IEAction", "$_IEStatus_InvalidDataType")
  2550.         SetError($_IEStatus_InvalidDataType, 1)
  2551.         Return 0
  2552.     EndIf
  2553.     ;
  2554.     $s_action = StringLower($s_action)
  2555.     Select
  2556.         ; DOM objects
  2557.         Case $s_action = "click"
  2558.             If __IEIsObjType($o_object, "documentContainer") Then
  2559.                 __IEErrorNotify("Error", "_IEAction", "$_IEStatus_InvalidObjectType")
  2560.                 SetError($_IEStatus_InvalidObjectType, 1)
  2561.                 Return 0
  2562.             EndIf
  2563.             $o_object.Click ()
  2564.             SetError($_IEStatus_Success)
  2565.             Return 1
  2566.         Case $s_action = "disable"
  2567.             If __IEIsObjType($o_object, "documentContainer") Then
  2568.                 __IEErrorNotify("Error", "_IEAction", "$_IEStatus_InvalidObjectType")
  2569.                 SetError($_IEStatus_InvalidObjectType, 1)
  2570.                 Return 0
  2571.             EndIf
  2572.             $o_object.disabled = True
  2573.             SetError($_IEStatus_Success)
  2574.             Return 1
  2575.         Case $s_action = "enable"
  2576.             If __IEIsObjType($o_object, "documentContainer") Then
  2577.                 __IEErrorNotify("Error", "_IEAction", "$_IEStatus_InvalidObjectType")
  2578.                 SetError($_IEStatus_InvalidObjectType, 1)
  2579.                 Return 0
  2580.             EndIf
  2581.             $o_object.disabled = False
  2582.             SetError($_IEStatus_Success)
  2583.             Return 1
  2584.         Case $s_action = "focus"
  2585.             If __IEIsObjType($o_object, "documentContainer") Then
  2586.                 __IEErrorNotify("Error", "_IEAction", "$_IEStatus_InvalidObjectType")
  2587.                 SetError($_IEStatus_InvalidObjectType, 1)
  2588.                 Return 0
  2589.             EndIf
  2590.             $o_object.Focus ()
  2591.             SetError($_IEStatus_Success)
  2592.             Return 1
  2593.             ; Browser Object
  2594.         Case $s_action = "copy"
  2595.             $o_object.document.execCommand ("Copy")
  2596.             SetError($_IEStatus_Success)
  2597.             Return 1
  2598.         Case $s_action = "cut"
  2599.             $o_object.document.execCommand ("Cut")
  2600.             SetError($_IEStatus_Success)
  2601.             Return 1
  2602.         Case $s_action = "paste"
  2603.             $o_object.document.execCommand ("Paste")
  2604.             SetError($_IEStatus_Success)
  2605.             Return 1
  2606.         Case $s_action = "delete"
  2607.             $o_object.document.execCommand ("Delete")
  2608.             SetError($_IEStatus_Success)
  2609.             Return 1
  2610.         Case $s_action = "saveas"
  2611.             $o_object.document.execCommand ("SaveAs")
  2612.             SetError($_IEStatus_Success)
  2613.             Return 1
  2614.         Case $s_action = "refresh"
  2615.             $o_object.document.execCommand ("Refresh")
  2616.             _IELoadWait($o_object)
  2617.             SetError($_IEStatus_Success)
  2618.             Return 1
  2619.         Case $s_action = "selectall"
  2620.             $o_object.document.execCommand ("SelectAll")
  2621.             SetError($_IEStatus_Success)
  2622.             Return 1
  2623.         Case $s_action = "unselect"
  2624.             $o_object.document.execCommand ("Unselect")
  2625.             SetError($_IEStatus_Success)
  2626.             Return 1
  2627.         Case $s_action = "print"
  2628.             $o_object.document.parentwindow.Print ()
  2629.             SetError($_IEStatus_Success)
  2630.             Return 1
  2631.         Case $s_action = "printdefault"
  2632.             If Not __IEIsObjType($o_object, "browser") Then
  2633.                 __IEErrorNotify("Error", "_IEAction", "$_IEStatus_InvalidObjectType")
  2634.                 SetError($_IEStatus_InvalidObjectType, 1)
  2635.                 Return 0
  2636.             EndIf
  2637.             $o_object.execWB (6, 2)
  2638.             SetError($_IEStatus_Success)
  2639.             Return 1
  2640.         Case $s_action = "back"
  2641.             If Not __IEIsObjType($o_object, "documentContainer") Then
  2642.                 __IEErrorNotify("Error", "_IEAction", "$_IEStatus_InvalidObjectType")
  2643.                 SetError($_IEStatus_InvalidObjectType, 1)
  2644.                 Return 0
  2645.             EndIf
  2646.             $o_object.GoBack ()
  2647.             SetError($_IEStatus_Success)
  2648.             Return 1
  2649.         Case $s_action = "blur"
  2650.             $o_object.Blur ()
  2651.             SetError($_IEStatus_Success)
  2652.             Return 1
  2653.         Case $s_action = "forward"
  2654.             If Not __IEIsObjType($o_object, "documentContainer") Then
  2655.                 __IEErrorNotify("Error", "_IEAction", "$_IEStatus_InvalidObjectType")
  2656.                 SetError($_IEStatus_InvalidObjectType, 1)
  2657.                 Return 0
  2658.             EndIf
  2659.             $o_object.GoForward ()
  2660.             SetError($_IEStatus_Success)
  2661.             Return 1
  2662.         Case $s_action = "home"
  2663.             If Not __IEIsObjType($o_object, "documentContainer") Then
  2664.                 __IEErrorNotify("Error", "_IEAction", "$_IEStatus_InvalidObjectType")
  2665.                 SetError($_IEStatus_InvalidObjectType, 1)
  2666.                 Return 0
  2667.             EndIf
  2668.             $o_object.GoHome ()
  2669.             SetError($_IEStatus_Success)
  2670.             Return 1
  2671.         Case $s_action = "invisible"
  2672.             If Not __IEIsObjType($o_object, "browser") Then
  2673.                 __IEErrorNotify("Error", "_IEAction", "$_IEStatus_InvalidObjectType")
  2674.                 SetError($_IEStatus_InvalidObjectType, 1)
  2675.                 Return 0
  2676.             EndIf
  2677.             $o_object.visible = 0
  2678.             SetError($_IEStatus_Success)
  2679.             Return 1
  2680.         Case $s_action = "visible"
  2681.             If Not __IEIsObjType($o_object, "browser") Then
  2682.                 __IEErrorNotify("Error", "_IEAction", "$_IEStatus_InvalidObjectType")
  2683.                 SetError($_IEStatus_InvalidObjectType, 1)
  2684.                 Return 0
  2685.             EndIf
  2686.             $o_object.visible = 1
  2687.             SetError($_IEStatus_Success)
  2688.             Return 1
  2689.         Case $s_action = "search"
  2690.             If Not __IEIsObjType($o_object, "browser") Then
  2691.                 __IEErrorNotify("Error", "_IEAction", "$_IEStatus_InvalidObjectType")
  2692.                 SetError($_IEStatus_InvalidObjectType, 1)
  2693.                 Return 0
  2694.             EndIf
  2695.             $o_object.GoSearch ()
  2696.             SetError($_IEStatus_Success)
  2697.             Return 1
  2698.         Case $s_action = "stop"
  2699.             If Not __IEIsObjType($o_object, "documentContainer") Then
  2700.                 __IEErrorNotify("Error", "_IEAction", "$_IEStatus_InvalidObjectType")
  2701.                 SetError($_IEStatus_InvalidObjectType, 1)
  2702.                 Return 0
  2703.             EndIf
  2704.             $o_object.Stop ()
  2705.             SetError($_IEStatus_Success)
  2706.             Return 1
  2707.         Case $s_action = "quit"
  2708.             If Not __IEIsObjType($o_object, "browser") Then
  2709.                 __IEErrorNotify("Error", "_IEAction", "$_IEStatus_InvalidObjectType")
  2710.                 SetError($_IEStatus_InvalidObjectType, 1)
  2711.                 Return 0
  2712.             EndIf
  2713.             $o_object.Quit ()
  2714.             $o_object = 0
  2715.             SetError($_IEStatus_Success)
  2716.             Return 1
  2717.         Case Else
  2718.             ; Unsupported Action
  2719.             __IEErrorNotify("Error", "_IEAction", "$_IEStatus_InvalidValue", "Invalid Action")
  2720.             SetError($_IEStatus_InvalidValue, 2)
  2721.             Return 0
  2722.     EndSelect
  2723. EndFunc   ;==>_IEAction
  2724.  
  2725. ;===============================================================================
  2726. ;
  2727. ; Function Name:    _IEPropertyGet()
  2728. ; Description:      Returns a select property of the browser
  2729. ; Parameter(s):     $o_object    - Object variable of an InternetExplorer.Application
  2730. ;                    $s_property    - Property selection
  2731. ; Requirement(s):   AutoIt3 Beta with COM support (post 3.1.1)
  2732. ; Return Value(s):  On Success     - Value of selected Property
  2733. ;                   On Failure    - Returns 0 and sets @ERROR
  2734. ;                    @ERROR        - 0 ($_IEStatus_Success) = No Error
  2735. ;                                - 3 ($_IEStatus_InvalidDataType) = Invalid Data Type
  2736. ;                                - 4 ($_IEStatus_InvalidObjectType) = Invalid Object Type
  2737. ;                                - 5 ($_IEStatus_InvalidValue) = Invalid Value
  2738. ;                    @Extended    - Contains invalid parameter number
  2739. ; Author(s):        Dale Hohm
  2740. ;
  2741. ;===============================================================================
  2742. ;
  2743. Func _IEPropertyGet(ByRef $o_object, $s_property)
  2744.     If Not IsObj($o_object) Then
  2745.         __IEErrorNotify("Error", "_IEPropertyGet", "$_IEStatus_InvalidDataType")
  2746.         SetError($_IEStatus_InvalidDataType, 1)
  2747.         Return 0
  2748.     EndIf
  2749.     If Not __IEIsObjType($o_object, "browserdom") Then
  2750.         __IEErrorNotify("Error", "_IEPropertyGet", "$_IEStatus_InvalidObjectType")
  2751.         SetError($_IEStatus_InvalidObjectType, 1)
  2752.         Return 0
  2753.     EndIf
  2754.     ;
  2755.     $s_property = StringLower($s_property)
  2756.     Select
  2757.         Case $s_property = "isdisabled"
  2758.             SetError($_IEStatus_Success)
  2759.             Return $o_object.isDisabled ()
  2760.         Case $s_property = "addressbar"
  2761.             If Not __IEIsObjType($o_object, "browser") Then
  2762.                 __IEErrorNotify("Error", "_IEPropertyGet", "$_IEStatus_InvalidObjectType")
  2763.                 SetError($_IEStatus_InvalidObjectType, 1)
  2764.                 Return 0
  2765.             EndIf
  2766.             SetError($_IEStatus_Success)
  2767.             Return $o_object.AddressBar ()
  2768.         Case $s_property = "busy"
  2769.             If Not __IEIsObjType($o_object, "browser") Then
  2770.                 __IEErrorNotify("Error", "_IEPropertyGet", "$_IEStatus_InvalidObjectType")
  2771.                 SetError($_IEStatus_InvalidObjectType, 1)
  2772.                 Return 0
  2773.             EndIf
  2774.             SetError($_IEStatus_Success)
  2775.             Return $o_object.Busy ()
  2776.         Case $s_property = "fullscreen"
  2777.             If Not __IEIsObjType($o_object, "browser") Then
  2778.                 __IEErrorNotify("Error", "_IEPropertyGet", "$_IEStatus_InvalidObjectType")
  2779.                 SetError($_IEStatus_InvalidObjectType, 1)
  2780.                 Return 0
  2781.             EndIf
  2782.             SetError($_IEStatus_Success)
  2783.             Return $o_object.fullScreen ()
  2784.         Case $s_property = "height"
  2785.             If Not __IEIsObjType($o_object, "browser") Then
  2786.                 __IEErrorNotify("Error", "_IEPropertyGet", "$_IEStatus_InvalidObjectType")
  2787.                 SetError($_IEStatus_InvalidObjectType, 1)
  2788.                 Return 0
  2789.             EndIf
  2790.             SetError($_IEStatus_Success)
  2791.             Return $o_object.Height ()
  2792.         Case $s_property = "hwnd"
  2793.             If Not __IEIsObjType($o_object, "browser") Then
  2794.                 __IEErrorNotify("Error", "_IEPropertyGet", "$_IEStatus_InvalidObjectType")
  2795.                 SetError($_IEStatus_InvalidObjectType, 1)
  2796.                 Return 0
  2797.             EndIf
  2798.             SetError($_IEStatus_Success)
  2799.             Return HWnd($o_object.HWND ())
  2800.         Case $s_property = "left"
  2801.             If Not __IEIsObjType($o_object, "browser") Then
  2802.                 __IEErrorNotify("Error", "_IEPropertyGet", "$_IEStatus_InvalidObjectType")
  2803.                 SetError($_IEStatus_InvalidObjectType, 1)
  2804.                 Return 0
  2805.             EndIf
  2806.             SetError($_IEStatus_Success)
  2807.             Return $o_object.Left ()
  2808.         Case $s_property = "locationname"
  2809.             If Not __IEIsObjType($o_object, "browser") Then
  2810.                 __IEErrorNotify("Error", "_IEPropertyGet", "$_IEStatus_InvalidObjectType")
  2811.                 SetError($_IEStatus_InvalidObjectType, 1)
  2812.                 Return 0
  2813.             EndIf
  2814.             SetError($_IEStatus_Success)
  2815.             Return $o_object.LocationName ()
  2816.         Case $s_property = "locationurl"
  2817.             If __IEIsObjType($o_object, "browser") Then
  2818.                 SetError($_IEStatus_Success)
  2819.                 Return $o_object.locationURL ()
  2820.             EndIf
  2821.             If __IEIsObjType($o_object, "window") Then
  2822.                 SetError($_IEStatus_Success)
  2823.                 Return $o_object.location.href ()
  2824.             EndIf
  2825.             If __IEIsObjType($o_object, "document") Then
  2826.                 SetError($_IEStatus_Success)
  2827.                 Return $o_object.parentwindow.location.href ()
  2828.             EndIf
  2829.             SetError($_IEStatus_Success)
  2830.             Return $o_object.document.parentwindow.location.href ()
  2831.         Case $s_property = "menubar"
  2832.             If Not __IEIsObjType($o_object, "browser") Then
  2833.                 __IEErrorNotify("Error", "_IEPropertyGet", "$_IEStatus_InvalidObjectType")
  2834.                 SetError($_IEStatus_InvalidObjectType, 1)
  2835.                 Return 0
  2836.             EndIf
  2837.             SetError($_IEStatus_Success)
  2838.             Return $o_object.MenuBar ()
  2839.         Case $s_property = "offline"
  2840.             If Not __IEIsObjType($o_object, "browser") Then
  2841.                 __IEErrorNotify("Error", "_IEPropertyGet", "$_IEStatus_InvalidObjectType")
  2842.                 SetError($_IEStatus_InvalidObjectType, 1)
  2843.                 Return 0
  2844.             EndIf
  2845.             SetError($_IEStatus_Success)
  2846.             Return $o_object.OffLine ()
  2847.         Case $s_property = "readystate"
  2848.             If Not __IEIsObjType($o_object, "browser") Then
  2849.                 __IEErrorNotify("Error", "_IEPropertyGet", "$_IEStatus_InvalidObjectType")
  2850.                 SetError($_IEStatus_InvalidObjectType, 1)
  2851.                 Return 0
  2852.             EndIf
  2853.             SetError($_IEStatus_Success)
  2854.             Return $o_object.ReadyState ()
  2855.         Case $s_property = "resizable"
  2856.             If Not __IEIsObjType($o_object, "browser") Then
  2857.                 __IEErrorNotify("Error", "_IEPropertyGet", "$_IEStatus_InvalidObjectType")
  2858.                 SetError($_IEStatus_InvalidObjectType, 1)
  2859.                 Return 0
  2860.             EndIf
  2861.             SetError($_IEStatus_Success)
  2862.             Return $o_object.Resizable ()
  2863.         Case $s_property = "silent"
  2864.             If Not __IEIsObjType($o_object, "browser") Then
  2865.                 __IEErrorNotify("Error", "_IEPropertyGet", "$_IEStatus_InvalidObjectType")
  2866.                 SetError($_IEStatus_InvalidObjectType, 1)
  2867.                 Return 0
  2868.             EndIf
  2869.             SetError($_IEStatus_Success)
  2870.             Return $o_object.Silent ()
  2871.         Case $s_property = "statusbar"
  2872.             If Not __IEIsObjType($o_object, "browser") Then
  2873.                 __IEErrorNotify("Error", "_IEPropertyGet", "$_IEStatus_InvalidObjectType")
  2874.                 SetError($_IEStatus_InvalidObjectType, 1)
  2875.                 Return 0
  2876.             EndIf
  2877.             SetError($_IEStatus_Success)
  2878.             Return $o_object.StatusBar ()
  2879.         Case $s_property = "statustext"
  2880.             If Not __IEIsObjType($o_object, "browser") Then
  2881.                 __IEErrorNotify("Error", "_IEPropertyGet", "$_IEStatus_InvalidObjectType")
  2882.                 SetError($_IEStatus_InvalidObjectType, 1)
  2883.                 Return 0
  2884.             EndIf
  2885.             SetError($_IEStatus_Success)
  2886.             Return $o_object.StatusText ()
  2887.         Case $s_property = "top"
  2888.             If Not __IEIsObjType($o_object, "browser") Then
  2889.                 __IEErrorNotify("Error", "_IEPropertyGet", "$_IEStatus_InvalidObjectType")
  2890.                 SetError($_IEStatus_InvalidObjectType, 1)
  2891.                 Return 0
  2892.             EndIf
  2893.             SetError($_IEStatus_Success)
  2894.             Return $o_object.Top ()
  2895.         Case $s_property = "visible"
  2896.             If Not __IEIsObjType($o_object, "browser") Then
  2897.                 __IEErrorNotify("Error", "_IEPropertyGet", "$_IEStatus_InvalidObjectType")
  2898.                 SetError($_IEStatus_InvalidObjectType, 1)
  2899.                 Return 0
  2900.             EndIf
  2901.             SetError($_IEStatus_Success)
  2902.             Return $o_object.Visible ()
  2903.         Case $s_property = "width"
  2904.             If Not __IEIsObjType($o_object, "browser") Then
  2905.                 __IEErrorNotify("Error", "_IEPropertyGet", "$_IEStatus_InvalidObjectType")
  2906.                 SetError($_IEStatus_InvalidObjectType, 1)
  2907.                 Return 0
  2908.             EndIf
  2909.             SetError($_IEStatus_Success)
  2910.             Return $o_object.Width ()
  2911.         Case $s_property = "appcodename"
  2912.             SetError($_IEStatus_Success)
  2913.             Return $o_object.document.parentWindow.top.navigator.appCodeName ()
  2914.         Case $s_property = "appminorversion"
  2915.             SetError($_IEStatus_Success)
  2916.             Return $o_object.document.parentWindow.top.navigator.aappMinorVersion ()
  2917.         Case $s_property = "appname"
  2918.             SetError($_IEStatus_Success)
  2919.             Return $o_object.document.parentWindow.top.navigator.appName ()
  2920.         Case $s_property = "appversion"
  2921.             SetError($_IEStatus_Success)
  2922.             Return $o_object.document.parentWindow.top.navigator.appCodeVersion ()
  2923.         Case $s_property = "browserlanguage"
  2924.             SetError($_IEStatus_Success)
  2925.             Return $o_object.document.parentWindow.top.navigator.browserLanguage ()
  2926.         Case $s_property = "cookieenabled"
  2927.             SetError($_IEStatus_Success)
  2928.             Return $o_object.document.parentWindow.top.navigator.cookieEnabled ()
  2929.         Case $s_property = "cpuclass"
  2930.             SetError($_IEStatus_Success)
  2931.             Return $o_object.document.parentWindow.top.navigator.cpuClass ()
  2932.         Case $s_property = "javaenabled"
  2933.             SetError($_IEStatus_Success)
  2934.             Return $o_object.document.parentWindow.top.navigator.javaEnabled ()
  2935.         Case $s_property = "online"
  2936.             SetError($_IEStatus_Success)
  2937.             Return $o_object.document.parentWindow.top.navigator.onLine ()
  2938.         Case $s_property = "platform"
  2939.             SetError($_IEStatus_Success)
  2940.             Return $o_object.document.parentWindow.top.navigator.platform ()
  2941.         Case $s_property = "systemlanguage"
  2942.             SetError($_IEStatus_Success)
  2943.             Return $o_object.document.parentWindow.top.navigator.systemLanguage ()
  2944.         Case $s_property = "useragent"
  2945.             SetError($_IEStatus_Success)
  2946.             Return $o_object.document.parentWindow.top.navigator.userAgent ()
  2947.         Case $s_property = "userlanguage"
  2948.             SetError($_IEStatus_Success)
  2949.             Return $o_object.document.parentWindow.top.navigator.userLanguage ()
  2950.         Case $s_property = "vcard"
  2951.             Local $aVcard[1][29]
  2952.             $aVcard[0][0] = "Business.City"
  2953.             $aVcard[0][1] = "Business.Country"
  2954.             $aVcard[0][2] = "Business.Fax"
  2955.             $aVcard[0][3] = "Business.Phone"
  2956.             $aVcard[0][4] = "Business.State"
  2957.             $aVcard[0][5] = "Business.StreetAddress"
  2958.             $aVcard[0][6] = "Business.URL"
  2959.             $aVcard[0][7] = "Business.Zipcode"
  2960.             $aVcard[0][8] = "Cellular"
  2961.             $aVcard[0][9] = "Company"
  2962.             $aVcard[0][10] = "Department"
  2963.             $aVcard[0][11] = "DisplayName"
  2964.             $aVcard[0][12] = "Email"
  2965.             $aVcard[0][13] = "FirstName"
  2966.             $aVcard[0][14] = "Gender"
  2967.             $aVcard[0][15] = "Home.City"
  2968.             $aVcard[0][16] = "Home.Country"
  2969.             $aVcard[0][17] = "Home.Fax"
  2970.             $aVcard[0][18] = "Home.Phone"
  2971.             $aVcard[0][19] = "Home.State"
  2972.             $aVcard[0][20] = "Home.StreetAddress"
  2973.             $aVcard[0][21] = "Home.Zipcode"
  2974.             $aVcard[0][22] = "Homepage"
  2975.             $aVcard[0][23] = "JobTitle"
  2976.             $aVcard[0][24] = "LastName"
  2977.             $aVcard[0][25] = "MiddleName"
  2978.             $aVcard[0][26] = "Notes"
  2979.             $aVcard[0][27] = "Office"
  2980.             $aVcard[0][28] = "Pager"
  2981.             For $i = 0 To 28
  2982.                 $aVcard[1][$i] = Execute('$o_object.document.parentWindow.top.navigator.userProfile.getAttribute("' & $aVcard[0][$i] & '")')
  2983.             Next
  2984.             SetError($_IEStatus_Success)
  2985.             Return $aVcard
  2986.         Case Else
  2987.             ; Unsupported Property
  2988.             __IEErrorNotify("Error", "_IEPropertyGet", "$_IEStatus_InvalidValue", "Invalid Property")
  2989.             SetError($_IEStatus_InvalidValue, 2)
  2990.             Return 0
  2991.     EndSelect
  2992. EndFunc   ;==>_IEPropertyGet
  2993.  
  2994. ;===============================================================================
  2995. ;
  2996. ; Function Name:    _IEPropertySet()
  2997. ; Description:      Set a select property of the Browser
  2998. ; Parameter(s):     $o_object    - Object variable of an InternetExplorer.Application
  2999. ;                    $s_property    - Property selection
  3000. ;                    $newvalue    - The new value to be set into the Browser Property
  3001. ; Requirement(s):   AutoIt3 Beta with COM support (post 3.1.1)
  3002. ; Return Value(s):  On Success     - Returns 1
  3003. ;                   On Failure    - Returns 0 and sets @ERROR
  3004. ;                    @ERROR        - 0 ($_IEStatus_Success) = No Error
  3005. ;                                - 3 ($_IEStatus_InvalidDataType) = Invalid Data Type
  3006. ;                                - 4 ($_IEStatus_InvalidObjectType) = Invalid Object Type
  3007. ;                                - 5 ($_IEStatus_InvalidValue) = Invalid Value
  3008. ;                    @Extended    - Contains invalid parameter number
  3009. ; Author(s):        Dale Hohm
  3010. ;
  3011. ;===============================================================================
  3012. ;
  3013. Func _IEPropertySet(ByRef $o_object, $s_property, $newvalue)
  3014.     If Not IsObj($o_object) Then
  3015.         __IEErrorNotify("Error", "_IEPropertySet", "$_IEStatus_InvalidDataType")
  3016.         SetError($_IEStatus_InvalidDataType, 1)
  3017.         Return 0
  3018.     EndIf
  3019.     ;
  3020.     $s_property = StringLower($s_property)
  3021.     Select
  3022.         Case $s_property = "addressbar"
  3023.             If Not __IEIsObjType($o_object, "browser") Then
  3024.                 __IEErrorNotify("Error", "_IEPropertySet", "$_IEStatus_InvalidObjectType")
  3025.                 SetError($_IEStatus_InvalidObjectType, 1)
  3026.                 Return 0
  3027.             EndIf
  3028.             $o_object.AddressBar = $newvalue
  3029.             SetError($_IEStatus_Success)
  3030.             Return 1
  3031.         Case $s_property = "height"
  3032.             If Not __IEIsObjType($o_object, "browser") Then
  3033.                 __IEErrorNotify("Error", "_IEPropertySet", "$_IEStatus_InvalidObjectType")
  3034.                 SetError($_IEStatus_InvalidObjectType, 1)
  3035.                 Return 0
  3036.             EndIf
  3037.             $o_object.Height = $newvalue
  3038.             SetError($_IEStatus_Success)
  3039.             Return 1
  3040.         Case $s_property = "left"
  3041.             If Not __IEIsObjType($o_object, "browser") Then
  3042.                 __IEErrorNotify("Error", "_IEPropertySet", "$_IEStatus_InvalidObjectType")
  3043.                 SetError($_IEStatus_InvalidObjectType, 1)
  3044.                 Return 0
  3045.             EndIf
  3046.             $o_object.Left = $newvalue
  3047.             SetError($_IEStatus_Success)
  3048.             Return 1
  3049.         Case $s_property = "locationname"
  3050.             If Not __IEIsObjType($o_object, "browser") Then
  3051.                 __IEErrorNotify("Error", "_IEPropertySet", "$_IEStatus_InvalidObjectType")
  3052.                 SetError($_IEStatus_InvalidObjectType, 1)
  3053.                 Return 0
  3054.             EndIf
  3055.             $o_object.LocationName = $newvalue
  3056.             SetError($_IEStatus_Success)
  3057.             Return 1
  3058.         Case $s_property = "locationurl"
  3059.             If Not __IEIsObjType($o_object, "browser") Then
  3060.                 __IEErrorNotify("Error", "_IEPropertySet", "$_IEStatus_InvalidObjectType")
  3061.                 SetError($_IEStatus_InvalidObjectType, 1)
  3062.                 Return 0
  3063.             EndIf
  3064.             $o_object.LocationURL = $newvalue
  3065.             SetError($_IEStatus_Success)
  3066.             Return 1
  3067.         Case $s_property = "menubar"
  3068.             If Not __IEIsObjType($o_object, "browser") Then
  3069.                 __IEErrorNotify("Error", "_IEPropertySet", "$_IEStatus_InvalidObjectType")
  3070.                 SetError($_IEStatus_InvalidObjectType, 1)
  3071.                 Return 0
  3072.             EndIf
  3073.             $o_object.MenuBar = $newvalue
  3074.             SetError($_IEStatus_Success)
  3075.             Return 1
  3076.         Case $s_property = "offline"
  3077.             If Not __IEIsObjType($o_object, "browser") Then
  3078.                 __IEErrorNotify("Error", "_IEPropertySet", "$_IEStatus_InvalidObjectType")
  3079.                 SetError($_IEStatus_InvalidObjectType, 1)
  3080.                 Return 0
  3081.             EndIf
  3082.             $o_object.OffLine = $newvalue
  3083.             SetError($_IEStatus_Success)
  3084.             Return 1
  3085.         Case $s_property = "resizable"
  3086.             If Not __IEIsObjType($o_object, "browser") Then
  3087.                 __IEErrorNotify("Error", "_IEPropertySet", "$_IEStatus_InvalidObjectType")
  3088.                 SetError($_IEStatus_InvalidObjectType, 1)
  3089.                 Return 0
  3090.             EndIf
  3091.             $o_object.Resizable = $newvalue
  3092.             SetError($_IEStatus_Success)
  3093.             Return 1
  3094.         Case $s_property = "statusbar"
  3095.             If Not __IEIsObjType($o_object, "browser") Then
  3096.                 __IEErrorNotify("Error", "_IEPropertySet", "$_IEStatus_InvalidObjectType")
  3097.                 SetError($_IEStatus_InvalidObjectType, 1)
  3098.                 Return 0
  3099.             EndIf
  3100.             $o_object.StatusBar = $newvalue
  3101.             SetError($_IEStatus_Success)
  3102.             Return 1
  3103.         Case $s_property = "statustext"
  3104.             If Not __IEIsObjType($o_object, "browser") Then
  3105.                 __IEErrorNotify("Error", "_IEPropertySet", "$_IEStatus_InvalidObjectType")
  3106.                 SetError($_IEStatus_InvalidObjectType, 1)
  3107.                 Return 0
  3108.             EndIf
  3109.             $o_object.StatusText = $newvalue
  3110.             SetError($_IEStatus_Success)
  3111.             Return 1
  3112.         Case $s_property = "top"
  3113.             If Not __IEIsObjType($o_object, "browser") Then
  3114.                 __IEErrorNotify("Error", "_IEPropertySet", "$_IEStatus_InvalidObjectType")
  3115.                 SetError($_IEStatus_InvalidObjectType, 1)
  3116.                 Return 0
  3117.             EndIf
  3118.             $o_object.Top = $newvalue
  3119.             SetError($_IEStatus_Success)
  3120.             Return 1
  3121.         Case $s_property = "width"
  3122.             If Not __IEIsObjType($o_object, "browser") Then
  3123.                 __IEErrorNotify("Error", "_IEPropertySet", "$_IEStatus_InvalidObjectType")
  3124.                 SetError($_IEStatus_InvalidObjectType, 1)
  3125.                 Return 0
  3126.             EndIf
  3127.             $o_object.Width = $newvalue
  3128.             SetError($_IEStatus_Success)
  3129.             Return 1
  3130.         Case Else
  3131.             ; Unsupported Property
  3132.             __IEErrorNotify("Error", "_IEPropertySet", "$_IEStatus_InvalidValue", "Invalid Property")
  3133.             SetError($_IEStatus_InvalidValue, 2)
  3134.             Return 0
  3135.     EndSelect
  3136. EndFunc   ;==>_IEPropertySet
  3137.  
  3138. ;===============================================================================
  3139. ;
  3140. ; Function Name:   _IEErrorNotify()
  3141. ; Description:        Specifies whether IE.au3 automatically notifies of Warnings and Errors (to the console)
  3142. ; Parameter(s):        $f_notify    - Optional: specifies whether notification should be on or off
  3143. ;                                - -1 = (Default) return current setting
  3144. ;                                - True = Turn On
  3145. ;                                - False = Turn Off
  3146. ; Requirement(s):   AutoIt3 Beta with COM support (post 3.1.1)
  3147. ; Return Value(s):  On Success     - If $f_notify = -1, returns the current notification setting, else returns 1
  3148. ;                   On Failure    - Returns 0
  3149. ; Author(s):        Dale Hohm
  3150. ;
  3151. ;===============================================================================
  3152. ;
  3153. Func _IEErrorNotify($f_notify = -1)
  3154.     Switch Number($f_notify)
  3155.         Case (-1)
  3156.             Return $_IEErrorNotify
  3157.         Case 0
  3158.             $_IEErrorNotify = False
  3159.             Return 1
  3160.         Case 1
  3161.             $_IEErrorNotify = True
  3162.             Return 1
  3163.         Case Else
  3164.             __IEErrorNotify("Error", "_IEErrorNotify", "$_IEStatus_InvalidValue")
  3165.             Return 0
  3166.     EndSwitch
  3167. EndFunc   ;==>_IEErrorNotify
  3168.  
  3169. ;===============================================================================
  3170. ;
  3171. ; Function Name:   _IEErrorHandlerRegister()
  3172. ; Description:        Register and enable a user COM error handler
  3173. ; Parameter(s):        $s_functionName - String variable with the name of a user-defined COM error handler
  3174. ;                                      defaults to the internal COM error handler in this UDF
  3175. ; Requirement(s):   AutoIt3 Beta with COM support (post 3.1.1)
  3176. ; Return Value(s):  On Success     - Returns 1
  3177. ;                   On Failure    - Returns 0 and sets @ERROR
  3178. ;                    @ERROR        - 0 ($_IEStatus_Success) = No Error
  3179. ;                                - 1 ($_IEStatus_GeneralError) = General Error
  3180. ;                    @Extended    - Contains invalid parameter number
  3181. ; Author(s):        Dale Hohm
  3182. ;
  3183. ;===============================================================================
  3184. ;
  3185. Func _IEErrorHandlerRegister($s_functionName = "__IEInternalErrorHandler")
  3186.     $sIEUserErrorHandler = $s_functionName
  3187.     $oIEErrorHandler = ""
  3188.     $oIEErrorHandler = ObjEvent("AutoIt.Error", $s_functionName)
  3189.     If IsObj($oIEErrorHandler) Then
  3190.         SetError($_IEStatus_Success)
  3191.         Return 1
  3192.     Else
  3193.         __IEErrorNotify("Error", "_IEPropertySet", "$_IEStatus_GeneralError", _
  3194.                 "Error Handler Not Registered - Check existance of error function")
  3195.         SetError($_IEStatus_GeneralError, 1)
  3196.         Return 0
  3197.     EndIf
  3198. EndFunc   ;==>_IEErrorHandlerRegister
  3199.  
  3200. ;===============================================================================
  3201. ;
  3202. ; Function Name:   _IEErrorHandlerDeRegister()
  3203. ; Description:        Disable a registered user COM error handler
  3204. ; Parameter(s):        None
  3205. ; Requirement(s):   AutoIt3 Beta with COM support (post 3.1.1)
  3206. ; Return Value(s):  On Success     - Returns 1
  3207. ;                   On Failure    - None
  3208. ; Author(s):        Dale Hohm
  3209. ;
  3210. ;===============================================================================
  3211. ;
  3212. Func _IEErrorHandlerDeRegister()
  3213.     $sIEUserErrorHandler = ""
  3214.     $oIEErrorHandler = ""
  3215.     SetError($_IEStatus_Success)
  3216.     Return 1
  3217. EndFunc   ;==>_IEErrorHandlerDeRegister
  3218.  
  3219. ;===============================================================================
  3220. ;
  3221. ; Function Name:   _IEQuit()
  3222. ; Description:        Close the browser and remove the object reference to it
  3223. ; Parameter(s):        $o_object     - Object variable of an InternetExplorer.Application
  3224. ; Requirement(s):   AutoIt3 Beta with COM support (post 3.1.1)
  3225. ; Return Value(s):  On Success     - Returns 1
  3226. ;                   On Failure    - Returns 0 and sets @ERROR
  3227. ;                    @ERROR        - 0 ($_IEStatus_Success) = No Error
  3228. ;                                - 3 ($_IEStatus_InvalidDataType) = Invalid Data Type
  3229. ;                                - 4 ($_IEStatus_InvalidObjectType) = Invalid Object Type
  3230. ;                    @Extended    - Contains invalid parameter number
  3231. ; Author(s):        Dale Hohm
  3232. ;
  3233. ;===============================================================================
  3234. ;
  3235. Func _IEQuit(ByRef $o_object)
  3236.     If Not IsObj($o_object) Then
  3237.         __IEErrorNotify("Error", "_IEQuit", "$_IEStatus_InvalidDataType")
  3238.         SetError($_IEStatus_InvalidDataType, 1)
  3239.         Return 0
  3240.     EndIf
  3241.     ;
  3242.     If Not __IEIsObjType($o_object, "browser") Then
  3243.         __IEErrorNotify("Error", "_IEAction", "$_IEStatus_InvalidObjectType")
  3244.         SetError($_IEStatus_InvalidObjectType, 1)
  3245.         Return 0
  3246.     EndIf
  3247.     ;
  3248.     SetError($_IEStatus_Success)
  3249.     $o_object.quit ()
  3250.     $o_object = 0
  3251.     Return 1
  3252. EndFunc   ;==>_IEQuit
  3253.  
  3254. #endregion
  3255. #region General
  3256. ;===============================================================================
  3257. ;
  3258. ; Function Name:    _IE_Introduction()
  3259. ; Description:        Display introductory information about IE.au3 in a new browser window
  3260. ; Parameter(s):     $s_module    - Optional: specifies which module to run
  3261. ;                                - basic = (Default) basic introduction
  3262. ; Requirement(s):   AutoIt3 Beta with COM support (post 3.1.1)
  3263. ; Return Value(s):  On Success     - Returns an object variable pointing to an InternetExplorer.Application object
  3264. ;                   On Failure    - Returns 0 and sets @ERROR
  3265. ;                    @ERROR        - 0 ($_IEStatus_Success) = No Error
  3266. ;                                - 5 ($_IEStatus_InvalidValue) = Invalid Value
  3267. ;                    @Extended    - Contains invalid parameter number
  3268. ; Author(s):        Dale Hohm
  3269. ;
  3270. ;===============================================================================
  3271. ;
  3272. Func _IE_Introduction($s_module = "basic")
  3273.     Local $s_html
  3274.     Switch $s_module
  3275.         Case "basic"
  3276.             $s_html &= "<HTML>" & @CR
  3277.             $s_html &= "<HEAD>" & @CR
  3278.             $s_html &= "<TITLE>_IE_Introduction ('basic')</TITLE>" & @CR
  3279.             $s_html &= "</HEAD>" & @CR
  3280.             $s_html &= "<BODY>" & @CR
  3281.             $s_html &= "<font face='Arial'>" & @CR
  3282.             $s_html &= "<table border=1 width=600 id='table1' cellspacing=6 cellpadding=6>" & @CR
  3283.             $s_html &= "<tr>" & @CR
  3284.             $s_html &= "<td>" & @CR
  3285.             $s_html &= "<h1>Welcome to IE.au3</font></h1>" & @CR
  3286.             $s_html &= "IE.au3 is a UDF (User Defined Function) library for the " & @CR
  3287.             $s_html &= "<a href='http://www.autoitscript.com'>AutoIt</a> scripting language." & @CR
  3288.             $s_html &= "<p>  " & @CR
  3289.             $s_html &= "IE.au3 allows you to either create or attach to an Internet Explorer browser and do " & @CR
  3290.             $s_html &= "just about anything you could do with it interactively with the mouse and " & @CR
  3291.             $s_html &= "keyboard, but do it through script." & @CR
  3292.             $s_html &= "<p>" & @CR
  3293.             $s_html &= "You can navigate to pages, click links, fill and submit forms etc. You can " & @CR
  3294.             $s_html &= "also do things you cannot do interactively like change or rewrite page " & @CR
  3295.             $s_html &= "content and JavaScripts, read, parse and save page content and monitor and act " & @CR
  3296.             $s_html &= "upon browser 'events'.<p>" & @CR
  3297.             $s_html &= "IE.au3 uses the COM interface in AutoIt to interact with the Internet Explorer " & @CR
  3298.             $s_html &= "object model and the DOM (Document Object Model) supported by the browser." & @CR
  3299.             $s_html &= "<p>" & @CR
  3300.             $s_html &= "You can find much more information at the <a href='http://msdn1.microsoft.com/'>MSDN (Microsoft Developer Network)</a> " & @CR
  3301.             $s_html &= "website and more specifically for the " & @CR
  3302.             $s_html &= "<a href='http://search.msdn.microsoft.com/search/Redirect.aspx?title=InternetExplorer+Object+(Internet+Explorer+-+WebBrowser)"
  3303.             $s_html &= "&url=http://msdn.microsoft.com/workshop/browser/webbrowser/reference/objects/internetexplorer.asp'>Internet Explorer Object Model</a> and the " & @CR
  3304.             $s_html &= "<a href='http://msdn.microsoft.com/workshop/author/dhtml/reference/objects/obj_document.asp'>Document Object Model</a>." & @CR
  3305.             $s_html &= "</td>" & @CR
  3306.             $s_html &= "</tr>" & @CR
  3307.             $s_html &= "</table>" & @CR
  3308.             $s_html &= "</font>" & @CR
  3309.             $s_html &= "</BODY>" & @CR
  3310.             $s_html &= "</HTML>"
  3311.         Case Else
  3312.             __IEErrorNotify("Error", "_IE_Introduction", "$_IEStatus_InvalidValue")
  3313.             SetError($_IEStatus_InvalidValue, 1)
  3314.             Return 0
  3315.     EndSwitch
  3316.     Local $o_object = _IECreate()
  3317.     _IEDocWriteHTML($o_object, $s_html)
  3318.     SetError($_IEStatus_Success)
  3319.     Return $o_object
  3320. EndFunc   ;==>_IE_Introduction
  3321.  
  3322. ;===============================================================================
  3323. ;
  3324. ; Function Name:    _IE_Example()
  3325. ; Description:        Display a new browser window pre-loaded with documents to be used in IE.au3 examples
  3326. ; Parameter(s):     $s_module    - Optional: specifies which module to run
  3327. ;                                - basic = (Default) simple HTML page with text, links and images
  3328. ;                                - form = simple HTML page with multiple form elements
  3329. ;                                - frameset = simple HTML page with frames
  3330. ;                                - iframe = simple HTML page with iframes
  3331. ;                                - table = simple HTML page with tables
  3332. ; Requirement(s):   AutoIt3 Beta with COM support (post 3.1.1)
  3333. ; Return Value(s):  On Success     - Returns an object variable pointing to an InternetExplorer.Application object
  3334. ;                   On Failure    - Returns 0 and sets @ERROR
  3335. ;                    @ERROR        - 0 ($_IEStatus_Success) = No Error
  3336. ;                                - 5 ($_IEStatus_InvalidValue) = Invalid Value
  3337. ;                    @Extended    - Contains invalid parameter number
  3338. ; Author(s):        Dale Hohm
  3339. ;
  3340. ;===============================================================================
  3341. ;
  3342. Func _IE_Example($s_module = "basic")
  3343.     Local $s_html = "", $o_object
  3344.     Switch $s_module
  3345.         Case "basic"
  3346.             $s_html &= "<HEAD>" & @CR
  3347.             $s_html &= "<TITLE>_IE_Example('basic')</TITLE>" & @CR
  3348.             $s_html &= "</HEAD>" & @CR
  3349.             $s_html &= "<BODY>" & @CR
  3350.             $s_html &= "<font face='Arial'>" & @CR
  3351.             $s_html &= "<a href='http://www.autoitscript.com'><img src='http://www.autoitscript.com/images/autoit_6_240x100.jpg' name='AutoItImage' alt='AutoIt Homepage Image'></a>" & @CR
  3352.             $s_html &= "<p>" & @CR
  3353.             $s_html &= "<div name=line1>This is a simple HTML page with text, links and images.</div>" & @CR
  3354.             $s_html &= "<p>" & @CR
  3355.             $s_html &= "<div name=line2><a href='http://www.autoitscript.com'>AutoIt</a> is a wonderful automation scripting language.</div>" & @CR
  3356.             $s_html &= "<p>" & @CR
  3357.             $s_html &= "<div name=line3>It is supported by a very active and supporting <a href='http://www.autoitscript.com/forum/'>user forum</a>.</div>" & @CR
  3358.             $s_html &= "<p>" & @CR
  3359.             $s_html &= "<div name=IEAu3Data></div>" & @CR
  3360.             $s_html &= "</font>" & @CR
  3361.             $s_html &= "</BODY>" & @CR
  3362.             $s_html &= "</HTML>"
  3363.             $o_object = _IECreate()
  3364.             _IEDocWriteHTML($o_object, $s_html)
  3365.         Case "table"
  3366.             $s_html &= "<HTML>" & @CR
  3367.             $s_html &= "<HEAD>" & @CR
  3368.             $s_html &= "<TITLE>_IE_Example('table')</TITLE>" & @CR
  3369.             $s_html &= "</HEAD>" & @CR
  3370.             $s_html &= "<BODY>" & @CR
  3371.             $s_html &= "<font face='Arial'>" & @CR
  3372.             $s_html &= "$oTableOne = _IETableGetObjByName($oIE, "tableOne")<br>" & @CR
  3373.             $s_html &= "<table border=1 id='tableOne'><p>" & @CR
  3374.             $s_html &= "<table border=1 id='tableOne'>" & @CR
  3375.             $s_html &= "    <tr>" & @CR
  3376.             $s_html &= "        <td>AutoIt</td>" & @CR
  3377.             $s_html &= "        <td>is</td>" & @CR
  3378.             $s_html &= "        <td>really</td>" & @CR
  3379.             $s_html &= "        <td>great</td>" & @CR
  3380.             $s_html &= "        <td>with</td>" & @CR
  3381.             $s_html &= "        <td>IE.au3</td>" & @CR
  3382.             $s_html &= "    </tr>" & @CR
  3383.             $s_html &= "    <tr>" & @CR
  3384.             $s_html &= "        <td>1</td>" & @CR
  3385.             $s_html &= "        <td>2</td>" & @CR
  3386.             $s_html &= "        <td>3</td>" & @CR
  3387.             $s_html &= "        <td>4</td>" & @CR
  3388.             $s_html &= "        <td>5</td>" & @CR
  3389.             $s_html &= "        <td>6</td>" & @CR
  3390.             $s_html &= "    </tr>" & @CR
  3391.             $s_html &= "    <tr>" & @CR
  3392.             $s_html &= "        <td>the</td>" & @CR
  3393.             $s_html &= "        <td>quick</td>" & @CR
  3394.             $s_html &= "        <td>red</td>" & @CR
  3395.             $s_html &= "        <td>fox</td>" & @CR
  3396.             $s_html &= "        <td>jumped</td>" & @CR
  3397.             $s_html &= "        <td>over</td>" & @CR
  3398.             $s_html &= "    </tr>" & @CR
  3399.             $s_html &= "    <tr>" & @CR
  3400.             $s_html &= "        <td>the</td>" & @CR
  3401.             $s_html &= "        <td>lazy</td>" & @CR
  3402.             $s_html &= "        <td>brown</td>" & @CR
  3403.             $s_html &= "        <td>dog</td>" & @CR
  3404.             $s_html &= "        <td>the</td>" & @CR
  3405.             $s_html &= "        <td>time</td>" & @CR
  3406.             $s_html &= "    </tr>" & @CR
  3407.             $s_html &= "    <tr>" & @CR
  3408.             $s_html &= "        <td>has</td>" & @CR
  3409.             $s_html &= "        <td>come</td>" & @CR
  3410.             $s_html &= "        <td>for</td>" & @CR
  3411.             $s_html &= "        <td>all</td>" & @CR
  3412.             $s_html &= "        <td>good</td>" & @CR
  3413.             $s_html &= "        <td>men</td>" & @CR
  3414.             $s_html &= "    </tr>" & @CR
  3415.             $s_html &= "    <tr>" & @CR
  3416.             $s_html &= "        <td>to</td>" & @CR
  3417.             $s_html &= "        <td>come</td>" & @CR
  3418.             $s_html &= "        <td>to</td>" & @CR
  3419.             $s_html &= "        <td>the</td>" & @CR
  3420.             $s_html &= "        <td>aid</td>" & @CR
  3421.             $s_html &= "        <td>of</td>" & @CR
  3422.             $s_html &= "    </tr>" & @CR
  3423.             $s_html &= "</table>" & @CR
  3424.             $s_html &= "<p>" & @CR
  3425.             $s_html &= "$oTableTwo = _IETableGetObjByName($oIE, "tableTwo")<br>" & @CR
  3426.             $s_html &= "<table border="1" id='tableTwo'><p>" & @CR
  3427.             $s_html &= "<table border=1 id='tableTwo'>" & @CR
  3428.             $s_html &= "    <tr>" & @CR
  3429.             $s_html &= "        <td colspan='4'>Table Top</td>" & @CR
  3430.             $s_html &= "    </tr>" & @CR
  3431.             $s_html &= "    <tr>" & @CR
  3432.             $s_html &= "        <td>One</td>" & @CR
  3433.             $s_html &= "        <td colspan='3'>Two</td>" & @CR
  3434.             $s_html &= "    </tr>" & @CR
  3435.             $s_html &= "    <tr>" & @CR
  3436.             $s_html &= "        <td>Three</td>" & @CR
  3437.             $s_html &= "        <td>Four</td>" & @CR
  3438.             $s_html &= "        <td colspan='2'>Five</td>" & @CR
  3439.             $s_html &= "    </tr>" & @CR
  3440.             $s_html &= "    <tr>" & @CR
  3441.             $s_html &= "        <td>Six</td>" & @CR
  3442.             $s_html &= "        <td colspan='3'>Seven</td>" & @CR
  3443.             $s_html &= "    </tr>" & @CR
  3444.             $s_html &= "    <tr>" & @CR
  3445.             $s_html &= "        <td>Eight</td>" & @CR
  3446.             $s_html &= "        <td>Nine</td>" & @CR
  3447.             $s_html &= "        <td>Ten</td>" & @CR
  3448.             $s_html &= "        <td>Eleven</td>" & @CR
  3449.             $s_html &= "    </tr>" & @CR
  3450.             $s_html &= "</table>" & @CR
  3451.             $s_html &= "</font>" & @CR
  3452.             $s_html &= "</BODY>" & @CR
  3453.             $s_html &= "</HTML>"
  3454.             $o_object = _IECreate()
  3455.             _IEDocWriteHTML($o_object, $s_html)
  3456.         Case "form"
  3457.             $s_html &= "<HTML>" & @CR
  3458.             $s_html &= "<HEAD>" & @CR
  3459.             $s_html &= "<TITLE>_IE_Example('form')</TITLE>" & @CR
  3460.             $s_html &= "</HEAD>" & @CR
  3461.             $s_html &= "<BODY>" & @CR
  3462.             $s_html &= "<font face='Arial'>" & @CR
  3463.             $s_html &= "<form name='ExampleForm' action='javascript:alert(""ExampleForm Submitted"");' method='post'>" & @CR
  3464.             $s_html &= "<table cellspacing=6 cellpadding=6 border=1>" & @CR
  3465.             $s_html &= "<tr>" & @CR
  3466.             $s_html &= "<td>ExampleForm</td>" & @CR
  3467.             $s_html &= "<td><form name='ExampleForm' action=action='javascript:alert(""ExampleForm Submitted"");' method='post'></td>" & @CR
  3468.             $s_html &= "</tr>" & @CR
  3469.             $s_html &= "<tr>" & @CR
  3470.             $s_html &= "<td>Hidden Input Element<input type='hidden' name='hiddenExample' value='secret value'></td>" & @CR
  3471.             $s_html &= "<td><input type='hidden' name='hiddenExample' value='secret value'></td>" & @CR
  3472.             $s_html &= "</tr>" & @CR
  3473.             $s_html &= "<tr>" & @CR
  3474.             $s_html &= "<td>" & @CR
  3475.             $s_html &= "<input type='text' name='textExample' value='http://' size='20' maxlength='30'>" & @CR
  3476.             $s_html &= "</td>" & @CR
  3477.             $s_html &= "<td><input type='text' name='textExample' value='http://' size='20' maxlength='30'></td>" & @CR
  3478.             $s_html &= "</tr>" & @CR
  3479.             $s_html &= "<tr>" & @CR
  3480.             $s_html &= "<td>" & @CR
  3481.             $s_html &= "<input type='password' name='passwordExample' size='10'>" & @CR
  3482.             $s_html &= "</td>" & @CR
  3483.             $s_html &= "<td><input type='password' name='passwordExample' size='10'></td>" & @CR
  3484.             $s_html &= "</tr>" & @CR
  3485.             $s_html &= "<tr>" & @CR
  3486.             $s_html &= "<td>" & @CR
  3487.             $s_html &= "<input type='file' name='fileExample'>" & @CR
  3488.             $s_html &= "</td>" & @CR
  3489.             $s_html &= "<td><input type='file' name='fileExample'></td>" & @CR
  3490.             $s_html &= "</tr>" & @CR
  3491.             $s_html &= "<tr>" & @CR
  3492.             $s_html &= "<td>" & @CR
  3493.             $s_html &= "<input type='image' name='imageExample' alt='AutoIt Homepage' src='http://www.autoitscript.com/images/autoit_6_240x100.jpg'>" & @CR
  3494.             $s_html &= "</td>" & @CR
  3495.             $s_html &= "<td><input type='image' name='imageExample' alt='AutoIt Homepage' src='http://www.autoitscript.com/images/autoit_6_240x100.jpg'></td>" & @CR
  3496.             $s_html &= "</tr>" & @CR
  3497.             $s_html &= "<tr>" & @CR
  3498.             $s_html &= "<td>" & @CR
  3499.             $s_html &= "<textarea name='textareaExample' rows='5' cols='15'>Hello!</textarea>" & @CR
  3500.             $s_html &= "</td>" & @CR
  3501.             $s_html &= "<td><textarea name='textareaExample' rows='5' cols='15'>Hello!</textarea></td>" & @CR
  3502.             $s_html &= "</tr>" & @CR
  3503.             $s_html &= "<tr>" & @CR
  3504.             $s_html &= "<td>" & @CR
  3505.             $s_html &= "<input type='checkbox' name='checkboxG1Example' value='gameBasketball'>Basketball<br>" & @CR
  3506.             $s_html &= "<input type='checkbox' name='checkboxG1Example' value='gameFootball'>Football<br>" & @CR
  3507.             $s_html &= "<input type='checkbox' name='checkboxG2Example' value='gameTennis' checked>Tennis<br>" & @CR
  3508.             $s_html &= "<input type='checkbox' name='checkboxG2Example' value='gameBaseball'>Baseball" & @CR
  3509.             $s_html &= "</td>" & @CR
  3510.             $s_html &= "<td><input type='checkbox' name='checkboxG1Example' value='gameBasketball'>Basketball<br><br>" & @CR
  3511.             $s_html &= "<input type='checkbox' name='checkboxG1Example' value='gameFootball'>Football<br><br>" & @CR
  3512.             $s_html &= "<input type='checkbox' name='checkboxG2Example' value='gameTennis' checked>Tennis<br><br>" & @CR
  3513.             $s_html &= "<input type='checkbox' name='checkboxG2Example' value='gameBaseball'>Baseball</td>" & @CR
  3514.             $s_html &= "</tr>" & @CR
  3515.             $s_html &= "<tr>" & @CR
  3516.             $s_html &= "<td>" & @CR
  3517.             $s_html &= "<input type='radio' name='radioExample' value='vehicleAirplane'>Airplane<br>" & @CR
  3518.             $s_html &= "<input type='radio' name='radioExample' value='vehicleTrain' checked>Train<br>" & @CR
  3519.             $s_html &= "<input type='radio' name='radioExample' value='vehicleBoat'>Boat<br>" & @CR
  3520.             $s_html &= "<input type='radio' name='radioExample' value='vehicleCar'>Car</td>" & @CR
  3521.             $s_html &= "<td><input type='radio' name='radioExample' value='vehicleAirplane'>Airplane<br><br>" & @CR
  3522.             $s_html &= "<input type='radio' name='radioExample' value='vehicleTrain' checked>Train<br><br>" & @CR
  3523.             $s_html &= "<input type='radio' name='radioExample' value='vehicleBoat'>Boat<br><br>" & @CR
  3524.             $s_html &= "<input type='radio' name='radioExample' value='vehicleCar'>Car<br></td>" & @CR
  3525.             $s_html &= "</tr>" & @CR
  3526.             $s_html &= "<tr>" & @CR
  3527.             $s_html &= "<td>" & @CR
  3528.             $s_html &= "<select name='selectExample'>" & @CR
  3529.             $s_html &= "<option value='homepage.html'>Homepage" & @CR
  3530.             $s_html &= "<option value='midipage.html'>Midipage" & @CR
  3531.             $s_html &= "<option value='freepage.html'>Freepage" & @CR
  3532.             $s_html &= "</select>" & @CR
  3533.             $s_html &= "</td>" & @CR
  3534.             $s_html &= "<td><select name='selectExample'><br>" & @CR
  3535.             $s_html &= "<option value='homepage.html'>Homepage<br>" & @CR
  3536.             $s_html &= "<option value='midipage.html'>Midipage<br>" & @CR
  3537.             $s_html &= "<option value='freepage.html'>Freepage<br>" & @CR
  3538.             $s_html &= "</select></td>" & @CR
  3539.             $s_html &= "</tr>" & @CR
  3540.             $s_html &= "<tr>" & @CR
  3541.             $s_html &= "<td>" & @CR
  3542.             $s_html &= "<select name='multipleSelectExample' size='6' multiple>" & @CR
  3543.             $s_html &= "<option value='Name1'>Aaron" & @CR
  3544.             $s_html &= "<option value='Name2'>Bruce" & @CR
  3545.             $s_html &= "<option value='Name3'>Carlos" & @CR
  3546.             $s_html &= "<option value='Name4'>Denis" & @CR
  3547.             $s_html &= "<option value='Name5'>Ed" & @CR
  3548.             $s_html &= "<option value='Name6'>Freddy" & @CR
  3549.             $s_html &= "</select>" & @CR
  3550.             $s_html &= "</td>" & @CR
  3551.             $s_html &= "<td><select name='multipleSelectExample' size='6' multiple><br>" & @CR
  3552.             $s_html &= "<option value='Name1'>Aaron<br>" & @CR
  3553.             $s_html &= "<option value='Name2'>Bruce<br>" & @CR
  3554.             $s_html &= "<option value='Name3'>Carlos<br>" & @CR
  3555.             $s_html &= "<option value='Name4'>Denis<br>" & @CR
  3556.             $s_html &= "<option value='Name5'>Ed<br>" & @CR
  3557.             $s_html &= "<option value='Name6'>Freddy<br>" & @CR
  3558.             $s_html &= "</select></td>" & @CR
  3559.             $s_html &= "</tr>" & @CR
  3560.             $s_html &= "<tr>" & @CR
  3561.             $s_html &= "<td>" & @CR
  3562.             $s_html &= "<input name='submitExample' type='submit' value='Submit'>" & @CR
  3563.             $s_html &= "<input name='resetExample' type='reset' value='Reset'>" & @CR
  3564.             $s_html &= "</td>" & @CR
  3565.             $s_html &= "<td><input name='submitExample' type='submit' value='Submit'><br>" & @CR
  3566.             $s_html &= "<input name='resetExample' type='reset' value='Reset'></td>" & @CR
  3567.             $s_html &= "</tr>" & @CR
  3568.             $s_html &= "</table>" & @CR
  3569.             $s_html &= "<input type='hidden' name='hiddenExample' value='secret value'>" & @CR
  3570.             $s_html &= "</form>" & @CR
  3571.             $s_html &= "</font>" & @CR
  3572.             $s_html &= "</BODY>" & @CR
  3573.             $s_html &= "</HTML>"
  3574.             $o_object = _IECreate()
  3575.             _IEDocWriteHTML($o_object, $s_html)
  3576.         Case "frameset"
  3577.             $s_html &= "<HTML>" & @CR
  3578.             $s_html &= "<HEAD>" & @CR
  3579.             $s_html &= "<TITLE>_IE_Example('frameset')</TITLE>" & @CR
  3580.             $s_html &= "</HEAD>" & @CR
  3581.             $s_html &= "<FRAMESET rows='25,200'>" & @CR
  3582.             $s_html &= "    <FRAME NAME=Top SRC=about:blank>" & @CR
  3583.             $s_html &= "    <FRAMESET cols='100,500'>" & @CR
  3584.             $s_html &= "        <FRAME NAME=Menu SRC=about:blank>" & @CR
  3585.             $s_html &= "        <FRAME NAME=Main SRC=about:blank>" & @CR
  3586.             $s_html &= "    </FRAMESET>" & @CR
  3587.             $s_html &= "</FRAMESET>" & @CR
  3588.             $s_html &= "</HTML>"
  3589.             $o_object = _IECreate()
  3590.             _IEDocWriteHTML($o_object, $s_html)
  3591.             _IEAction($o_object, "refresh")
  3592.             Local $oFrameTop = _IEFrameGetObjByName($o_object, "Top")
  3593.             Local $oFrameMenu = _IEFrameGetObjByName($o_object, "Menu")
  3594.             Local $oFrameMain = _IEFrameGetObjByName($o_object, "Main")
  3595.             _IEBodyWriteHTML($oFrameTop, '$oFrameTop = _IEFrameGetObjByName($oIE, "Top")')
  3596.             _IEBodyWriteHTML($oFrameMenu, '$oFrameMenu = _IEFrameGetObjByName($oIE, "Menu")')
  3597.             _IEBodyWriteHTML($oFrameMain, '$oFrameMain = _IEFrameGetObjByName($oIE, "Main")')
  3598.         Case "iframe"
  3599.             $s_html &= "<HTML>" & @CR
  3600.             $s_html &= "<HEAD>" & @CR
  3601.             $s_html &= "<TITLE>_IE_Example('iframe')</TITLE>" & @CR
  3602.             $s_html &= "</HEAD>" & @CR
  3603.             $s_html &= "<BODY>" & @CR
  3604.             $s_html &= "<table cellspacing=6 cellpadding=6 border=1>" & @CR
  3605.             $s_html &= "<tr>" & @CR
  3606.             $s_html &= "<td><iframe name='iFrameOne' src='about:blank' title='iFrameOne'></iframe></td>" & @CR
  3607.             $s_html &= "<td><iframe name="iFrameOne" src="about:blank" title="iFrameOne"></td>" & @CR
  3608.             $s_html &= "</tr>" & @CR
  3609.             $s_html &= "<tr>" & @CR
  3610.             $s_html &= "<td><iframe name='iFrameTwo' src='about:blank' title='iFrameTwo'></iframe></td>" & @CR
  3611.             $s_html &= "<td><iframe name="iFrameTwo" src="about:blank" title="iFrameTwo"></td>" & @CR
  3612.             $s_html &= "</tr>" & @CR
  3613.             $s_html &= "</table>" & @CR
  3614.             $s_html &= "</BODY>" & @CR
  3615.             $s_html &= "</HTML>"
  3616.             $o_object = _IECreate()
  3617.             _IEDocWriteHTML($o_object, $s_html)
  3618.             _IEAction($o_object, "refresh")
  3619.             Local $oIFrameOne = _IEFrameGetObjByName($o_object, "iFrameOne")
  3620.             Local $oIFrameTwo = _IEFrameGetObjByName($o_object, "iFrameTwo")
  3621.             _IEBodyWriteHTML($oIFrameOne, '$oIFrameOne = _IEFrameGetObjByName($oIE, "iFrameOne")')
  3622.             _IEBodyWriteHTML($oIFrameTwo, '$oIFrameTwo = _IEFrameGetObjByName($oIE, "iFrameTwo")')
  3623.         Case Else
  3624.             __IEErrorNotify("Error", "_IE_Example", "$_IEStatus_InvalidValue")
  3625.             SetError($_IEStatus_InvalidValue, 1)
  3626.             Return 0
  3627.     EndSwitch
  3628.     
  3629.     SetError($_IEStatus_Success)
  3630.     Return $o_object
  3631. EndFunc   ;==>_IE_Example
  3632.  
  3633. ;===============================================================================
  3634. ;
  3635. ; Function Name:    _IE_VersionInfo()
  3636. ; Description:        Returns an array of information about the IE.au3 version
  3637. ; Parameter(s):     None
  3638. ; Requirement(s):   AutoIt3 Beta with COM support (post 3.1.1)
  3639. ; Return Value(s):  On Success     - Returns an array ($IEAU3VersionInfo)
  3640. ;                                - $IEAU3VersionInfo[0] = Release Type (T=Test or V=Production)
  3641. ;                                - $IEAU3VersionInfo[1] = Major Version
  3642. ;                                - $IEAU3VersionInfo[2] = Minor Version
  3643. ;                                - $IEAU3VersionInfo[3] = Sub Version
  3644. ;                                - $IEAU3VersionInfo[4] = Release Date (YYYYMMDD)
  3645. ;                                - $IEAU3VersionInfo[5] = Display Version (e.g. V2.0-0)
  3646. ;                   On Failure    - None
  3647. ; Author(s):        Dale Hohm
  3648. ;
  3649. ;===============================================================================
  3650. ;
  3651. Func _IE_VersionInfo()
  3652.     __IEErrorNotify("Information", "_IE_VersionInfo", "version " & _
  3653.             $IEAU3VersionInfo[0] & _
  3654.             $IEAU3VersionInfo[1] & "." & _
  3655.             $IEAU3VersionInfo[2] & "-" & _
  3656.             $IEAU3VersionInfo[3], "Release date: " & $IEAU3VersionInfo[4])
  3657.     SetError($_IEStatus_Success)
  3658.     Return $IEAU3VersionInfo
  3659. EndFunc   ;==>_IE_VersionInfo
  3660.  
  3661. #endregion
  3662. #region Internal functions
  3663. ;
  3664. ; Internal Functions with names starting with two underscores will not be documented
  3665. ; as user functions
  3666. ;
  3667. ;===============================================================================
  3668. ;
  3669. ; Function Name:    __IELockSetForegroundWindow()
  3670. ; Description:        Locks (and Unlocks) current Foregrouns Window focus to prevent a new window
  3671. ;                    from stealing it (e.g. when creating invisible IE browser)
  3672. ; Parameter(s):        $nLockCode    - 1 Lock Foreground Window Focus, 2 Unlock Foreground Window Focus
  3673. ; Requirement(s):   Windows 2000/Windows ME or higher
  3674. ; Return Value(s):  On Success     - 1
  3675. ;                   On Failure     - 0  and sets @ERROR and @EXTENDED to non-zero values
  3676. ; Author(s):        Valik
  3677. ;
  3678. ;===============================================================================
  3679. ;
  3680. Func __IELockSetForegroundWindow($nLockCode)
  3681.     Local $aRet = DllCall("user32.dll", "int", "LockSetForegroundWindow", "int", $nLockCode)
  3682.     If @error Then
  3683.         SetError(@error, @extended)
  3684.         Return False
  3685.     EndIf
  3686.     Return $aRet[0]
  3687. EndFunc   ;==>__IELockSetForegroundWindow
  3688.  
  3689. ;===============================================================================
  3690. ;
  3691. ; Function Name:    __IEControlGetObjFromHWND()
  3692. ; Description:        Returns a COM Object Window reference to an embebedded Webbrowser control
  3693. ; Parameter(s):        $hWin        - HWND of a Internet Explorer_Server1 control obtained for example:
  3694. ;                    $hwnd = ControlGetHandle("MyApp","","Internet Explorer_Server1")
  3695. ; Requirement(s):   Windows XP, Windows 2003 or higher.
  3696. ;                    Windows 2000; Windows 98; Windows ME; Windows NT may install the
  3697. ;                    Microsoft Active Accessibility 2.0 Redistributable:
  3698. ;                    http://www.microsoft.com/downloads/details.aspx?FamilyId=9B14F6E1-888A-4F1D-B1A1-DA08EE4077DF&displaylang=en
  3699. ; Return Value(s):  On Success     - Returns DOM Window object
  3700. ;                   On Failure     - 0  and sets @ERROR = 1
  3701. ; Author(s):        Larry with thanks to Valik
  3702. ;
  3703. ;===============================================================================
  3704. ;
  3705. Func __IEControlGetObjFromHWND(ByRef $hWin)
  3706.     DllCall("ole32.dll", "int", "CoInitialize", "ptr", 0)
  3707.     Local Const $WM_HTML_GETOBJECT = __IERegisterWindowMessage("WM_HTML_GETOBJECT")
  3708.     Local Const $SMTO_ABORTIFHUNG = 0x0002
  3709.     Local $lResult, $typUUID, $aRet, $oIE
  3710.     
  3711.     __IESendMessageTimeout($hWin, $WM_HTML_GETOBJECT, 0, 0, $SMTO_ABORTIFHUNG, 1000, $lResult)
  3712.     
  3713.     $typUUID = DllStructCreate("int;short;short;byte[8]")
  3714.     DllStructSetData($typUUID, 1, 0x626FC520)
  3715.     DllStructSetData($typUUID, 2, 0xA41E)
  3716.     DllStructSetData($typUUID, 3, 0x11CF)
  3717.     DllStructSetData($typUUID, 4, 0xA7, 1)
  3718.     DllStructSetData($typUUID, 4, 0x31, 2)
  3719.     DllStructSetData($typUUID, 4, 0x0, 3)
  3720.     DllStructSetData($typUUID, 4, 0xA0, 4)
  3721.     DllStructSetData($typUUID, 4, 0xC9, 5)
  3722.     DllStructSetData($typUUID, 4, 0x8, 6)
  3723.     DllStructSetData($typUUID, 4, 0x26, 7)
  3724.     DllStructSetData($typUUID, 4, 0x37, 8)
  3725.     
  3726.     $aRet = DllCall("oleacc.dll", "int", "ObjectFromLresult", "int", $lResult, "ptr", DllStructGetPtr($typUUID), _
  3727.             "int", 0, "idispatch_ptr", "")
  3728.     
  3729.     If IsObj($aRet[4]) Then
  3730.         $oIE = $aRet[4].Script ()
  3731.         ; $oIE is now a valid IDispatch object
  3732.         Return $oIE.Document.parentwindow
  3733.     Else
  3734.         SetError(1)
  3735.         Return 0
  3736.     EndIf
  3737. EndFunc   ;==>__IEControlGetObjFromHWND
  3738.  
  3739. ;===============================================================================
  3740. ; Function Name:    __IERegisterWindowMessage()
  3741. ; Description:        Required by __IEControlGetObjFromHWND()
  3742. ; Author(s):        Larry with thanks to Valik
  3743. ;===============================================================================
  3744. Func __IERegisterWindowMessage($sMsg)
  3745.     Local $aRet = DllCall("user32.dll", "int", "RegisterWindowMessage", "str", $sMsg)
  3746.     If @error Then Return SetError(@error, @extended, 0)
  3747.     Return $aRet[0]
  3748. EndFunc   ;==>__IERegisterWindowMessage
  3749.  
  3750. ;===============================================================================
  3751. ; Function Name:    __IESendMessageTimeout()
  3752. ; Description:        Required by __IEControlGetObjFromHWND()
  3753. ; Author(s):        Larry with thanks to Valik
  3754. ;===============================================================================
  3755. Func __IESendMessageTimeout($hWnd, $msg, $wParam, $lParam, $nFlags, $nTimeout, ByRef $vOut, $r = 0, $t1 = "int", $t2 = "int")
  3756.     Local $aRet = DllCall("user32.dll", "long", "SendMessageTimeout", "hwnd", $hWnd, "int", $msg, $t1, $wParam, _
  3757.             $t2, $lParam, "int", $nFlags, "int", $nTimeout, "int_ptr", "")
  3758.     If @error Then
  3759.         $vOut = 0
  3760.         Return SetError(@error, @extended, 0)
  3761.     EndIf
  3762.     $vOut = $aRet[7]
  3763.     If $r >= 0 And $r <= 4 Then Return $aRet[$r]
  3764.     Return $aRet
  3765. EndFunc   ;==>__IESendMessageTimeout
  3766.  
  3767. ;===============================================================================
  3768. ; Function Name:    __IEIsObjType()
  3769. ; Description:        Check to see if an object variable is of a specific type
  3770. ; Author(s):        Dale Hohm
  3771. ;===============================================================================
  3772. Func __IEIsObjType(ByRef $o_object, $s_type)
  3773.     If Not IsObj($o_object) Then
  3774.         SetError($_IEStatus_InvalidDataType, 1)
  3775.         Return 0
  3776.     EndIf
  3777.     
  3778.     ; Setup internal error handler to Trap COM errors, turn off error notification
  3779.     Local $status = __IEInternalErrorHandlerRegister()
  3780.     If Not $status Then __IEErrorNotify("Warning", "internal function __IEIsObjType", _
  3781.             "Cannot register internal error handler, cannot trap COM errors", _
  3782.             "Use _IEErrorHandlerRegister() to register a user error handler")
  3783.     Local $f_NotifyStatus = _IEErrorNotify() ; save current error notify status
  3784.     _IEErrorNotify(False)
  3785.     ;
  3786.     Local $s_Name = ObjName($o_object), $objectOK = False, $oTemp
  3787.     
  3788.     Switch $s_type
  3789.         Case "browserdom"
  3790.             $oTemp = $o_object.document
  3791.             If __IEIsObjType($o_object, "documentcontainer") Then
  3792.                 $objectOK = True
  3793.             ElseIf __IEIsObjType($o_object, "document") Then
  3794.                 $objectOK = True
  3795.             ElseIf __IEIsObjType($oTemp, "document") Then
  3796.                 $objectOK = True
  3797.             EndIf
  3798.         Case "browser"
  3799.             If $s_Name = "IWebBrowser2" Then $objectOK = True
  3800.         Case "window"
  3801.             If $s_Name = "DispHTMLWindow2" Then $objectOK = True
  3802.         Case "documentContainer"
  3803.             If $s_Name = "DispHTMLWindow2" Or $s_Name = "IWebBrowser2" Then $objectOK = True
  3804.         Case "document"
  3805.             If $s_Name = "DispHTMLDocument" Then $objectOK = True
  3806.         Case "table"
  3807.             If $s_Name = "DispHTMLTable" Then $objectOK = True
  3808.         Case "form"
  3809.             If $s_Name = "DispHTMLFormElement" Then $objectOK = True
  3810.         Case "forminputelement"
  3811.             If ($s_Name = "DispHTMLInputElement") Or ($s_Name = "DispHTMLSelectElement") Or ($s_Name = "DispHTMLTextAreaElement") Then $objectOK = True
  3812.         Case "elementcollection"
  3813.             If ($s_Name = "DispHTMLElementCollection") Then $objectOK = True
  3814.         Case "formselectelement"
  3815.             If $s_Name = "DispHTMLSelectElement" Then $objectOK = True
  3816.         Case Else
  3817.             ; Unsupported ObjType specified
  3818.             SetError($_IEStatus_InvalidValue, 2)
  3819.             Return 0
  3820.     EndSwitch
  3821.     
  3822.     ; restore error notify and error handler status
  3823.     _IEErrorNotify($f_NotifyStatus) ; restore notification status
  3824.     __IEInternalErrorHandlerDeRegister()
  3825.     
  3826.     If $objectOK Then
  3827.         SetError($_IEStatus_Success)
  3828.         Return 1
  3829.     Else
  3830.         SetError($_IEStatus_InvalidObjectType, 1)
  3831.         Return 0
  3832.     EndIf
  3833.     
  3834. EndFunc   ;==>__IEIsObjType
  3835.  
  3836. Func __IEErrorNotify($s_severity, $s_func, $s_status = "", $s_message = "")
  3837.     If $_IEErrorNotify Or $__IEAU3Debug Then
  3838.         Local $sStr = "--> IE.au3 " & $s_severity & " from function " & $s_func
  3839.         If Not $s_status = "" Then $sStr &= ", " & $s_status
  3840.         If Not $s_message = "" Then $sStr &= " (" & $s_message & ")"
  3841.         ConsoleWrite($sStr & @CR)
  3842.     EndIf
  3843.     Return 1
  3844. EndFunc   ;==>__IEErrorNotify
  3845.  
  3846. Func __IEInternalErrorHandlerRegister()
  3847.     Local $sCurrentErrorHandler = ObjEvent("AutoIt.Error")
  3848.     If $sCurrentErrorHandler <> "" And Not IsObj($oIEErrorHandler) Then
  3849.         ; We've got trouble... User COM Error handler assigned without using _IEUserErrorHandlerRegister
  3850.         SetError($_IEStatus_GeneralError)
  3851.         Return 0
  3852.     EndIf
  3853.     $oIEErrorHandler = ""
  3854.     $oIEErrorHandler = ObjEvent("AutoIt.Error", "__IEInternalErrorHandler")
  3855.     If IsObj($oIEErrorHandler) Then
  3856.         SetError($_IEStatus_Success)
  3857.         Return 1
  3858.     Else
  3859.         SetError($_IEStatus_GeneralError)
  3860.         Return 0
  3861.     EndIf
  3862. EndFunc   ;==>__IEInternalErrorHandlerRegister
  3863.  
  3864. Func __IEInternalErrorHandlerDeRegister()
  3865.     $oIEErrorHandler = ""
  3866.     If $sIEUserErrorHandler <> "" Then
  3867.         $oIEErrorHandler = ObjEvent("AutoIt.Error", $sIEUserErrorHandler)
  3868.     EndIf
  3869.     SetError($_IEStatus_Success)
  3870.     Return 1
  3871. EndFunc   ;==>__IEInternalErrorHandlerDeRegister
  3872.  
  3873. Func __IEInternalErrorHandler()
  3874.     $IEComErrorScriptline = $oIEErrorHandler.scriptline
  3875.     $IEComErrorNumber = $oIEErrorHandler.number
  3876.     $IEComErrorNumberHex = Hex($oIEErrorHandler.number, 8)
  3877.     $IEComErrorDescription = StringStripWS($oIEErrorHandler.description, 2)
  3878.     $IEComErrorWinDescription = StringStripWS($oIEErrorHandler.WinDescription, 2)
  3879.     $IEComErrorSource = $oIEErrorHandler.Source
  3880.     $IEComErrorHelpFile = $oIEErrorHandler.HelpFile
  3881.     $IEComErrorHelpContext = $oIEErrorHandler.HelpContext
  3882.     $IEComErrorLastDllError = $oIEErrorHandler.LastDllError
  3883.     $IEComErrorOutput = ""
  3884.     $IEComErrorOutput &= "--> COM Error Encountered in " & @ScriptName & @CR
  3885.     $IEComErrorOutput &= "----> $IEComErrorScriptline = " & $IEComErrorScriptline & @CR
  3886.     $IEComErrorOutput &= "----> $IEComErrorNumberHex = " & $IEComErrorNumberHex & @CR
  3887.     $IEComErrorOutput &= "----> $IEComErrorNumber = " & $IEComErrorNumber & @CR
  3888.     $IEComErrorOutput &= "----> $IEComErrorWinDescription = " & $IEComErrorWinDescription & @CR
  3889.     $IEComErrorOutput &= "----> $IEComErrorDescription = " & $IEComErrorDescription & @CR
  3890.     $IEComErrorOutput &= "----> $IEComErrorSource = " & $IEComErrorSource & @CR
  3891.     $IEComErrorOutput &= "----> $IEComErrorHelpFile = " & $IEComErrorHelpFile & @CR
  3892.     $IEComErrorOutput &= "----> $IEComErrorHelpContext = " & $IEComErrorHelpContext & @CR
  3893.     $IEComErrorOutput &= "----> $IEComErrorLastDllError = " & $IEComErrorLastDllError & @CR
  3894.     If $_IEErrorNotify Or $__IEAU3Debug Then ConsoleWrite($IEComErrorOutput & @CR)
  3895.     SetError($_IEStatus_ComError)
  3896.     Return
  3897. EndFunc   ;==>__IEInternalErrorHandler
  3898. #endregion
  3899.